加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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标头按预期工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读