Python requests库发送GET请求超时但wget可正常访问问题
问题根因
目标网站sahibinden.com配置了反爬策略,会校验HTTP请求头的User-Agent字段:
- Python requests库默认携带的UA为
python-requests/[对应版本号],会被网站安全规则直接拦截,因此请求超时 - wget工具自带的UA不在网站拦截名单中,所以可以正常跟随301跳转、最终拿到页面响应
补充:从wget的执行日志可以看到,请求sahibinden.com最终会跳转到带www前缀的地址https://www.sahibinden.com/,直接请求该最终地址可以减少跳转步骤
修复后的代码
通过配置和浏览器一致的请求头绕过反爬校验即可正常请求:
import requests as req # 配置模拟浏览器的请求头,User-Agent可替换为你本地浏览器的真实值 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.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": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3" } url = 'https://www.sahibinden.com/' content = req.get(url, headers=headers, timeout=30) # 打印响应状态码和页面内容 print(content.status_code) print(content.text)
内容的提问来源于stack exchange,提问作者Emrullah Ozkilinc
相关产品推荐
相关产品推荐

