python伪造请求头_fake-useragent,python爬虫伪装请求头

数据头User-Agent反爬虫机制解析:

当我们使用浏览器访问网站的时候,浏览器会发送一小段信息给网站,我们称为Request Headers,在这个头部信息里面包含了本次访问的一些信息,例如编码方式,当前地址,将要访问的地址等等。这些信息一般来说是不必要的,但是现在很多网站会把这些信息利用起来。其中最常被用到的一个信息,叫做“User-Agent”。网站可以通过User-Agent来判断用户是使用什么浏览器访问。不同浏览器的User-Agent是不一样的,但都有遵循一定的规则。

但是如果我们使用 Python 的 Requests 直接访问网站,除了网址不提供其他的信息,那么网站收到的User-Agent是空。这个时候网站就知道我们不是使用浏览器访问的,于是它就可以拒绝我们的访问。

如何获取网站的 User-Agent 呢?

请打开 Chrome,任意打开一个网站,然后右键,“检查” 打开开发者工具,定位到 “Network” 选项卡,并刷新网页,如下图所示:

python伪造请求头_fake-useragent,python爬虫伪装请求头_第1张图片

在左下角会出现当前网页加载的所有元素。随便点一个元素,于是在右下角会出现对当前元素的请求信息。在里面找到Request Headers这一项,里面的内容即为我们需要的内容。

host 提供了主机名及端口号

Accept          告诉服务器能够发送哪些媒体类型

Accept-Charset      告诉服务器能够发送哪些字符集

Accept-Encoding     告诉服务器能够发送哪些编码方式(最常见的是utf-8)

Accept-Language     告诉服务器能够发送哪些语言

Cache-control 这个字段用于指定所有缓存机制在整个请求/响应链中必须服从的指令

User agent 发送请求的应用程序名(一些网站会根据UA访问的频率间隔时间进行反爬)

cookie 特定的标记信息,一般可以直接复制,对于一些变化的可以选择构造(有关cookie的内容将在另一篇博文中进行详细介绍)

不同的网站,Request Headers 是不同的

提示:post方法,session模块的get方法,以及Session模块的get方法,post方法,都支持自定义Headers,参数名为headers,他可以接收字典作为参数。我们可以通过字典来设定Headers,例如:

python伪造请求头_fake-useragent,python爬虫伪装请求头_第2张图片

所以,检查User-Agent是一种最简单的反爬虫机制,而通过设定Request Headers中的User-Agent,可以突破这种机制。

除此之外呢,下面介绍一个python下非常好用的伪装请求头的库:fake-useragent,具体使用说明如下:

安装fake-useragent库

pip install fake-useragent

获取各浏览器的fake-useragent

1 from fake_useragent importUserAgent2 ua =UserAgent()3 #ie浏览器的user agent

4 print(ua.ie)5

6 #opera浏览器

7 print(ua.opera)8

9 #chrome浏览器

10 print(ua.chrome)11

12 #firefox浏览器

13 print(ua.firefox)14

15 #safri浏览器

16 print(ua.safari)17

18 #最常用的方式

19 #写爬虫最实用的是可以随意变换headers,一定要有随机性。支持随机生成请求头

20 print(ua.random)21 print(ua.random)22 print(ua.random)

示例代码

1 from fake_useragent importUserAgent2 importrequests3 ua=UserAgent()4 #请求的网址

5 url="http://www.baidu.com"

6 #请求头

7 headers={"User-Agent":ua.random}8 #请求网址

9 response=requests.get(url=url,headers=headers)10 #响应体内容

11 print(response.text)12 #响应状态信息

13 print(response.status_code)14 #响应头信息

15 print(response.headers)

原文:https://blog.csdn.net/qq_29186489/article/details/78496747

你可能感兴趣的:(python伪造请求头)