无法读取来自URL的请求HTML响应

时间:2018-12-03 11:27:46

标签: python-3.x session cookies python-requests ddos

我正在使用python请求库来发出http请求。对于此网站:https://www.epi.org/resources/budget/我无法读取HTML响应,因为它不是人类可读的,看起来它受cloudfare ddos​​保护。这是我下面的简单代码。

import requests

headers = {'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
           'accept-encoding': 'gzip, deflate, br',
           'accept-language': 'en-US,en;q=0.9,pt;q=0.8',
           'cache-control': 'max-age=0',
           'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36',
           'upgrade-insecure-requests': '1'}

s = requests.Session()
a = s.get('https://www.epi.org/resources/budget/',headers=headers)
print (a.text)

响应HTML如下所示:https://justpaste.it/6ie73

1 个答案:

答案 0 :(得分:0)

获取不可读内容的原因是Accept-Encoding。与浏览器不同,如果Python得到gzip响应,我们必须自己解压缩。此外,br需要这样做,但要使用不同的模块brotl。因此,您应该设置'Accept-Encoding': 'default'。顺便说一句,如果您需要完整的内容,则必须进行渲染。