使用Python requests爬取Indeed印度站遇403错误求解决方案
解决requests爬取Indeed印度站403错误的非Selenium方案
问题说明
使用Python的requests库请求https://in.indeed.com时返回403状态码,仅验证状态码就失败,需要非Selenium的解决办法。测试代码如下:
url = "https://in.indeed.com" hdr = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'} result = requests.get(url,headers = hdr) print(result)
解决方案
403错误一般是网站反爬机制识别出请求并非正常浏览器发起,以下是几个有效的调整方向:
- 完善请求头字段:仅提供User-Agent不足以模拟真实浏览器,需要补充
Accept、Accept-Language、Referer等常见请求头字段,让请求更贴近浏览器行为。 - 用Session维持会话:通过
requests.Session()创建会话对象,它会自动处理Cookie,模拟浏览器的会话状态,降低被拦截概率。 - 更新User-Agent版本:避免使用过于老旧的浏览器版本标识,换成近期的Chrome版本号。
修改后的示例代码
import requests url = "https://in.indeed.com" # 模拟现代Chrome浏览器的完整请求头 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8', 'Accept-Language': 'en-US,en;q=0.5', 'Referer': 'https://www.google.com/', 'Cache-Control': 'max-age=0', 'Connection': 'keep-alive' } # 使用Session发起请求 with requests.Session() as session: result = session.get(url, headers=headers) print(result.status_code) # 可选:打印部分响应内容验证是否成功获取页面 # print(result.text[:500])
额外提示
- 如果仍被拦截,可尝试添加
Upgrade-Insecure-Requests: 1字段到请求头。 - 不要高频发起请求,添加合理的请求间隔,避免触发频率限制。
内容的提问来源于stack exchange,提问作者Aavinash
相关产品推荐
相关产品推荐

