使用python的请求的HTTP标头格式

时间:2019-05-09 18:56:29

标签: python-3.x http request header python-requests

我使用python请求捕获网站的http标头。例如,这是一个响应头:

  

{'Connection':'keep-alive',   'Access-Control-Allow-Origin':'*','cache-control':'max-age = 600',   'Content-Type':'text / html; charset = utf-8',“到期时间”:“星期五,4月19日   2019 03:16:28 GMT'','Via':'1.1清漆,1.1清漆','X-ESI':'开',   'Verso':'false','Accept-Ranges':'none','Date':'Fri,19 Apr 2019   03:11:12 GMT”,“年龄”:“ 283”,“ Set-Cookie”:   'CN_xid = 08f66bff-4001-4173-b4e2-71ac31bb58d7;过期时间= 2019年10月16日,星期三   格林尼治标准时间03:11:12; path = / ;, xid1 = 1; Expires = Fri,19 Apr 2019 03:11:27 GMT;   path = / ;, verso_bucket = 281; Expires = Sat,18 Apr 2020 03:11:12 GMT;   path = /;','X-Served-By':'cache-iad2133-IAD,cache-gru17122-GRU',   'X-Cache':'HIT,MISS','X-Cache-Hits':'1,0','X-Timer':   'S1555643472.999490,VS0,VE302','内容-安全-政策':   “ default-src https:数据:'unsafe-inline''unsafe-eval'; child-src   https:数据:blob :; connect-src https:数据:blob :; font-src https:   数据:; img-src https:数据:blob :; media-src https:数据:blob :;   object-src https :; script-src https:数据:blob:'unsafe-inline'   '不安全评估'; style-src https:'unsafe-inline';   阻止所有混合内容;升级不安全的请求;报告uri   https://l.com/csp/gq”,   'X-Fastly-Device-Detect':'desktop','Strict-Transport-Security':   'max-age = 7776000; preload”,“ Vary”:“ Accept-Encoding,Verso,   接受编码”,“内容编码”:“ gzip”,“传输编码”:   'chunked'}

我注意到从测试的几个示例中,我从requests接收到的标头的格式为'key':'value'(请注意,键和值周围的单个冒号)。但是,当我从Firefox-> Web开发人员-> Inspector中检查标题,并选择以原始格式查看标题时,看不到逗号:

  

HTTP / 2.0 200 OK日期:2019年5月9日星期四18:49:07 GMT过期:-1   缓存控制:私有,最大年龄= 0内容类型:text / html;   charset = UTF-8严格传输安全性:max-age = 31536000   内容编码:br服务器:gws内容长度:55844   x-xss-保护:0 x-frame-options:SAMEORIGIN set-cookie:   1P_JAR = 2019-05-09-18; expires =星期六,2019年6月8日18:49:07 GMT;路径= /;   domain = .google.com alt-svc:quic =“:443”; ma = 2592000; v =“ 46,44,43,39”   X-Firefox-Spdy:h2

我需要知道:python的requests模块是否总是添加单个冒号?这对我很重要,因为我需要在用于分析标头的正则表达式中包括/排除它们。

2 个答案:

答案 0 :(得分:0)

我认为您遇到的问题是请求以dict的形式返回,而不是firefox检查器给您的值。执行此操作时,如果其中一个值对具有数字或布尔值,则可能会得到混合结果,因此在进行正则表达式时,如果可以删除外部撇号或仅使用给定值,则可能需要使用“尝试/例外”。

答案 1 :(得分:0)

添加冒号的不是请求模块。 Request将标头表示为dict,但您似乎将它们视为字符串。当Python将字典转换为字符串时,它们会得到冒号,逗号和引号。

正确的解决方案是将字典视为字典,而不是将其转换为字符串。但是,如果您确实想要字符串形式的标题,则应考虑使用其他工具,例如curl。