Python请求库添加了一个额外的标题“Accept-Encoding:identity
发布时间:2020-12-16 21:39:39 所属栏目:Python 来源:网络整理
导读:这是我的代码. import requestsfrom sys import exitproxies = { "http": "127.0.0.1:8888","https": "127.0.0.1:8888",}headers = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0","Accept-Encoding": "gzip,
这是我的代码.
import requests from sys import exit proxies = { "http": "127.0.0.1:8888","https": "127.0.0.1:8888",} headers = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0","Accept-Encoding": "gzip,deflate","Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","Accept-Language": "en-US,en;q=0.5","Connection": "keep-alive" } login_page = "http://www.test.com/login/" r = requests.get(login_page,proxies = proxies,headers = headers) original_cookies = r.cookies exit(0) 这是我从fiddler2得到的.如您所见,它添加了一个额外的头文件Accept-Encoding:identity. GET http://www.test.com/login/ HTTP/1.1 Accept-Encoding: identity Accept: text/html,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip,deflate Host: www.test.com Connection: keep-alive User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0 我在Windows 7 64位上使用Python 3.3.2并请求1.2.3. 有人可以给点建议吗? 谢谢. 解决方法
它起源于
http.client 的内部,由urllib3使用,供请求使用.
http.client实际上是checks,如果已经传递了headers字典中的accept-encoding,如果有,则跳过添加标识头 – 唯一的问题是作为头字典传递的内容是这样的: CaseInsensitiveDict({b'Accept-Encoding': 'gzip,deflate,compress',...}) 那么为什么它不起作用?请求encodes头名称,并且在python3中,str对象与bytes对象相比总是为False,在http.client中执行的检查失败… 如果你真的想摆脱额外的标题,最快的方法是注释line 340 in requests/models.py,或者monkeypatch requests.models.PreparedRequest.prepare_headers 编辑: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |