爬取coches.net时GET请求返回错误页面,遭反爬识别求助
解决coches.net反爬拦截的方案
补全请求头字段:仅设置User-Agent不足以模拟真实浏览器,需添加更多关键请求头,让请求更接近人类访问行为:
import random import requests from bs4 import BeautifulSoup desktop_agents = [ 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36' ] headers = { 'User-Agent': random.choice(desktop_agents), 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Language': 'es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3', 'Referer': 'https://www.coches.net/', 'Connection': 'keep-alive', 'Upgrade-Insecure-Requests': '1' } response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, "html.parser") print(response.text)添加随机请求延迟:避免短时间内频繁发起请求,每次请求后加入2-5秒的随机延迟,模拟人类浏览的间隔节奏:
import time # 请求完成后添加延迟 time.sleep(random.uniform(2, 5))使用会话保持状态:用
requests.Session()维持会话,模拟浏览器的Cookie持久化机制,很多网站会通过Cookie验证会话的合法性:session = requests.Session() session.headers.update(headers) # 先请求首页获取初始Cookie session.get('https://www.coches.net/') # 再发起目标页面请求 response = session.get(url)应对Cloudflare验证:如果网站启用了Cloudflare防护,单纯的请求头和延迟可能无法绕过,可以尝试使用
cfscrape库(需配合Node.js环境),或者直接用Selenium模拟真实浏览器的点击、加载行为。验证请求URL有效性:确认目标URL是否需要从首页跳转后访问,直接请求深层页面容易被系统判定为异常请求。
内容的提问来源于stack exchange,提问作者Adri Nuñez Font
相关产品推荐
相关产品推荐

