如何使用 Python 请求来伪造浏览器访问并生成用户代理?

新手上路,请多包涵

我想从 这个 网站获取内容。

如果我使用像 Firefox 或 Chrome 这样的浏览器,我可以获得我想要的真实网站页面,但如果我使用 Python requests 包(或 wget 命令)来获得它,它会返回一个完全不同的 HTML 页面。

我认为该网站的开发人员为此做了一些阻止。

问题

如何使用 python 请求或命令 wget 伪造浏览器访问?

原文由 user1726366 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

提供 User-Agent 标头

 import requests

url = 'http://www.ichangtou.com/#company:data_000008.html'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}

response = requests.get(url, headers=headers)
print(response.content)

仅供参考,这里是不同浏览器的用户代理字符串列表:


附带说明一下,有一个非常有用的第三方包叫做 fake-useragent ,它在用户代理上提供了一个很好的抽象层:

假用户代理

最新的简单用户代理伪造者与真实世界的数据库

演示:

 >>> from fake_useragent import UserAgent
>>> ua = UserAgent()
>>> ua.chrome
u'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36'
>>> ua.random
u'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.67 Safari/537.36'

原文由 alecxe 发布,翻译遵循 CC BY-SA 3.0 许可协议

我使用 了假的 UserAgent

如何使用:

 from fake_useragent import UserAgent
import requests


ua = UserAgent()
print(ua.chrome)
header = {'User-Agent':str(ua.chrome)}
print(header)
url = "https://www.hybrid-analysis.com/recent-submissions?filter=file&sort=^timestamp"
htmlContent = requests.get(url, headers=header)
print(htmlContent)

输出:

 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1309.0 Safari/537.17
{'User-Agent': 'Mozilla/5.0 (X11; OpenBSD i386) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36'}
<Response [200]>

原文由 Umesh Kaushik 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题