如何将Chrome复制的请求头正确传入requests.get的headers参数避免报错
问题解答
1. 基础格式要求
是的,所有请求头的键和值都需要用单引号或双引号包裹为字符串格式,Python中字典的字符串类型键值必须加引号,否则会直接触发语法报错。
2. 需要额外处理的特殊字段
你从Chrome复制的是HTTP/2协议的请求头,其中带冒号开头的4个伪首部字段:authority、:method、:path、:scheme不需要手动添加到headers字典里,requests库会根据你传入的url和请求方法自动生成,手动传入反而可能导致请求异常。
另外content-length字段也不需要手动填写,requests会自动根据你提交的请求体计算长度,手动填错数值会直接报错。
同时注意你复制的请求头对应的是POST请求,不要用requests.get发起,要改成requests.post方法,否则和实际请求逻辑不匹配也会返回错误。
3. 整理后的正确headers示例
直接使用下方的字典格式即可:
headers = { 'accept': 'application/json, text/plain, */*', 'accept-encoding': 'gzip, deflate, br', 'accept-language': 'en', 'content-type': 'application/json;charset=UTF-8', 'origin': 'https://food.grab.com', 'referer': 'https://food.grab.com/', 'sec-ch-ua': '"Google Chrome";v="95", "Chromium";v="95", ";Not A Brand";v="99"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"macOS"', 'sec-fetch-dest': 'empty', 'sec-fetch-mode': 'cors', 'sec-fetch-site': 'same-site', 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36', 'x-country-code': 'PH', 'x-gfc-country': 'PH', 'x-grab-web-app-version': '~k5VPZk5KBtLKJOP7fLbR', 'x-recaptcha-token': '03AGdBq24a8dFVYhN75ZFSZR6MSzf8anLJEc-c6xCFkUYi87f5FQLlYV8NeHspOYwqJYS1ypTDvpPVU4FG6NbvkwbwHgHCxAOaiHi8sLtnraXL78xszl-HgySw_yBGCadmL4I9TmnDL8HITA4ug4FZ-tITOWIE9AI1L2OWAgFJC25r663aHtF16pJGLJovE4D1IVm2NziSUhWNdlv9aSxym4s1dGhM9YTu0w2FNCfiHqLURKs-sk4GLQ-O1Xv2xuTRuvBiDxXZYisKKt0nnoMpov5CPmwzFVaQGFXVk5xLz05bsbsdN7gf4DcoGD8i1yM3vbNMld-gqgDJ6DhLX3IY6NxJ_2QdH-dQctu4OCB9oPUursOAFs6ph8Xqf_kL3XQLzdO2qRMhU9wVlmAocV8lm8DTF0Urxp1JkRY6X7SeKDeQsX0KX2vO3ZFFjfYb19Gqpts5CQCGJO5j' }
发起请求时使用POST方法,把对应请求参数放到对应位置即可:
response = requests.post(url, headers=headers, json=请求参数字典)
内容的提问来源于stack exchange,提问作者RPM
相关产品推荐
相关产品推荐

