Curl和Python请求(get)报告不同的http状态代码
发布时间:2020-12-14 00:54:32 所属栏目:Linux 来源:网络整理
导读:我编写了一个 python脚本来验证来自主机的url连接. linux curl中报告成功(http 200)的内容在python(3.6)请求模块中报告为403. 我希望有人能帮助我理解报告的http状态代码中的差异吗? 来自Linux命令行的卷曲…. $curl -ILs https://www.h2o.ai|egrep ^HTTPHT
我编写了一个
python脚本来验证来自主机的url连接. linux curl中报告成功(http 200)的内容在python(3.6)请求模块中报告为403.
我希望有人能帮助我理解报告的http状态代码中的差异吗? 来自Linux命令行的卷曲…. $curl -ILs https://www.h2o.ai|egrep ^HTTP HTTP/1.1 200 OK Python请求模块….. >>> import requests >>> url = 'https://www.h2o.ai' >>> r = requests.get(url,verify=True,timeout=3) >>> r.status_code 403 >>> requests.packages.urllib3.disable_warnings() >>> r = requests.get(url,verify=False,timeout=3) >>> r.status_code 403 解决方法
好像是python-requests /< version> User-Agent从网站获得403响应:
In [98]: requests.head('https://www.h2o.ai',headers={'User-Agent': 'Foo bar'}) Out[98]: <Response [200]> In [99]: requests.head('https://www.h2o.ai') Out[99]: <Response [403]> 如果需要,您可以联系网站所有者,或者只是通过User-Agent标头使用其他用户代理(就像我上面使用的那样). 我是如何调试的: 我使用-v(–verbose)选项运行curl来检查正在发送的标头,然后使用response.request检出相同的请求(假设响应保存为响应). 除了User-Agent标头之外,我没有发现任何显着差异;因此,更改User-Agent标头按预期工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |