Curl和Python请求(get)报告不同的http状态代码

Curl和Python请求(get)报告不同的http状态代码,第1张

概述我编写了一个 python脚本来验证来自主机的url连接. linux curl中报告成功(http 200)的内容在python(3.6)请求模块中报告为403. 我希望有人能帮助我理解报告的http状态代码中的差异吗? 来自Linux命令行的卷曲…. $curl -ILs https://www.h2o.ai|egrep ^HTTPHTTP/1.1 200 OK Python请求模块….. 我编写了一个 python脚本来验证来自主机的url连接. linux curl中报告成功(http 200)的内容在python(3.6)请求模块中报告为403.

我希望有人能帮助我理解报告的http状态代码中的差异吗?

来自Linux命令行的卷曲….

$curl -ILs https://www.h2o.ai|egrep ^httphttp/1.1 200 OK

Python请求模块…..

>>> import requests>>> url = 'https://www.h2o.ai'>>> r = requests.get(url,verify=True,timeout=3)>>> r.status_code403>>> requests.packages.urllib3.disable_warnings()>>> r = requests.get(url,verify=False,timeout=3)>>> r.status_code403
解决方法 好像是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标头按预期工作.

总结

以上是内存溢出为你收集整理的Curl和Python请求(get)报告不同的http状态代码全部内容,希望文章能够帮你解决Curl和Python请求(get)报告不同的http状态代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1025232.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存