使用requests代理请求部分网站仅返回Header数据的问题求助
使用requests代理请求部分网站仅返回Header数据的问题求助
我最近碰到个挺奇怪的问题,用Python的requests库加代理访问Google的时候完全正常,能拿到完整的页面源码,但换成请求whatismyipaddress.com这类网站时,居然只返回一堆Header相关的信息,根本看不到页面内容。
先给大家看看我的测试代码:
正常工作的代码(访问Google)
import requests proxies = {'http://':'3.127.121.101:80','https': "http://3.127.121.101:80"} data = requests.get("https://google.com", proxies=proxies, verify=False) print(data.text)
这段代码能顺利返回Google页面的源码,没任何问题。
出现问题的代码(访问whatismyipaddress.com)
data = requests.get("https://whatismyipaddress.com/", proxies=proxies, verify=False) print(data.text)
返回的内容只有这些Header数据:
REMOTE_ADDR = 18.192.6.179 REMOTE_PORT = 53634 REQUEST_METHOD = GET REQUEST_URI = / REQUEST_TIME_FLOAT = 1735919122.0307965 REQUEST_TIME = 1735919122 HTTP_HOST = whatismyipaddress.com HTTP_USER-AGENT = python-requests/2.32.3 HTTP_ACCEPT-ENCODING = gzip, deflate, br HTTP_ACCEPT = */* HTTP_CONNECTION = keep-alive
我试过换好几个不同的代理,也试过用其他网络请求库,但结果全是一样的。有没有大佬能帮我分析下这到底是咋回事,该怎么解决呀?
可能的原因和尝试方向:
- 代理本身的限制:不少免费代理或者低端代理会对特定网站做特殊处理,比如只转发请求头,或者返回代理自己的测试页面,而不是目标网站的真实内容。你可以先试试用浏览器手动通过这个代理访问whatismyipaddress.com,看看能不能正常加载页面,先排除代理本身的问题。
- 目标网站的反爬机制:像whatismyipaddress.com这类检测IP的网站,对爬虫特别敏感,它能通过
User-Agent识别出你是用Python的requests发起的请求,再结合代理IP的特征,就可能拒绝返回完整页面,只返回基础的请求信息。你可以试试修改请求头,模拟浏览器的请求: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-Language': 'zh-CN,zh;q=0.9' } data = requests.get("https://whatismyipaddress.com/", proxies=proxies, headers=headers, verify=False) print(data.text) - 代理协议配置不规范:你写的proxies字典里,http的键是
'http://',https的键是'https',虽然requests可能能兼容,但规范写法应该统一成不带斜杠的键,调整后再试试:proxies = { 'http': 'http://3.127.121.101:80', 'https': 'http://3.127.121.101:80' } - 检查是否被重定向:有些代理会偷偷把你的请求重定向到自己的页面,返回的其实是代理生成的内容。你可以打印
print(data.url)看看最终请求的URL是不是目标网站的,有没有被莫名重定向。
备注:内容来源于stack exchange,提问作者Vurt
相关产品推荐
相关产品推荐

