对于反爬虫伪装浏览器进行爬虫

摘要:
对于爬虫中部分网站设置了请求次数过多后会封杀ip,现在模拟浏览器进行爬虫,也就是说让服务器认识到访问他的是真正的浏览器而不是机器操作简单的直接添加请求头,将浏览器的信息在请求数据时传入:打开浏览器--打开开发者模式--请求任意网站如下图:找到请求的的名字,打开后查看headers栏,找到User-Agent,复制。

对于爬虫中部分网站设置了请求次数过多后会封杀ip,现在模拟浏览器进行爬虫,也就是说让服务器认识到访问他的是真正的浏览器而不是机器操作

简单的直接添加请求头,将浏览器的信息在请求数据时传入:

打开浏览器--打开开发者模式--请求任意网站

如下图:找到请求的的名字,打开后查看headers栏,找到User-Agent,复制。然后添加到请求头中

对于反爬虫伪装浏览器进行爬虫第1张

代码如下:

1 importrequests
2 
3 url = 'https://www.baidu.com'
4 headers ={
5         'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) '
6                      'Chrome/65.0.3325.181 Safari/537.36'
7 }
8 rq = requests.get(url=url, headers=headers)
9 print(rq.text)

更深的伪装浏览器,添加多个浏览器信息,每次请求的时候随机发送浏览器信息,让服务器了解不是一个浏览器一直在访问,(可以百度查找user-agent)

代码如下:

1 importrequests
2 importrandom
3 
4 url = 'https://www.baidu.com'
5 headers_lists =(
6         'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) '
7                      'Chrome/65.0.3325.181 Safari/537.36',
8         'Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;Maxthon2.0',
9         'Opera/9.80(Android2.3.4;Linux;Operamobi/adr-1107051709;U;zh-cn)Presto/2.8.149Version/11.10',
10         'Mozilla/5.0(WindowsNT6.1;rv:2.0.1)Gecko/20100101Firefox/4.0.1',
11         'Mozilla/5.0(Android;Linuxarmv7l;rv:5.0)Gecko/Firefox/5.0fennec/5.0',)
12 
13 rq = requests.get(url=url,headers={'User-Agent':random.choice(headers_lists)})
14 print(rq.text)

完整的请求体解释:

以下是笔者访问百度的请求体。

对于反爬虫伪装浏览器进行爬虫第2张

Accept:浏览器端可以接受的媒体类型

Accept-Encoding:浏览器申明自己接收的编码方法

Accept-Language:浏览器申明自己接收的语言

Connection:keep-alive 客户端和服务器之间还在连接中,如果关闭就是close

Host:请求报头域主要用于指定被请求资源的Internet主机和端口号

User-Agent:使用的操作系统和浏览器的名称和版本

Cookie:是用来存储一些用户信息以便让服务器辨别用户身份的

免责声明:文章转载自《对于反爬虫伪装浏览器进行爬虫》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇动态反射springboot彩蛋,如何改变banner(启动项目时出现的spring的图案)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

jenkins 2.263.2 ,可用的环境变量

以下变量可用于Shell脚本 分店名称 对于多分支项目,此名称将设置为正在构建的分支的名称,例如,如果您希望master从功能分支而不是功能分支部署到生产;如果对应于某种更改请求,则名称通常是任意的(请参阅CHANGE_ID和CHANGE_TARGET)。 CHANGE_ID 对于与某种变更请求相对应的多分支项目,如果支持,它将被设置为变更ID,例如...

学习笔记(爬虫):爬取笔趣阁剑来小说

1、目的 爬取笔趣阁网站的剑来小说正文内容,并保存到本地中。 2、实现方案 首先,请求目标网站的网页数据,通过分析找出章节地址的特点,并通过xpath获取到章节链接; 其次,请求每一章节的内容,通过数据清洗去除脏数据,得到剑来文章正文; 最后,保存数据到本地。 3、程序设计 3.1 请求数据模块 请求模块,负责请求网站数据,主要使用requests的g...

js调用本地office打开服务器的office文件预览

本来是想做成直接在网页上在线预览office文件的,但是找了好多,要不是收费,要不就是要调用别人的API不安全,所以纠结了好久还是用调用本地的office预览office文件。 废话不多说,那么怎么调用的呢,这个是代码: <script type="text/javascript"> //获取路径...

一、简单的http抓包(微信公众网页登录模拟)

一、准备工具:系统:XP 浏览器:IE8 抓包工具:HttpWatch(它可以查看url请求的数据包) 二、抓包思路: 浏览器上的任何获取数据的方式都符合http协议的请求,只要发送符合要求的数据就可以模拟任何操作,所以抓包重点就要找出服务器需要的数据,例如:模拟登录的话,就是找出那个是用户字段,密码字段,验证码字段,获取有需要的Cookie字段等信息...

绝对推荐:桌面提醒记事软件Active Desktop Calendar

绝对推荐:桌面提醒记事软件ActiveDesktopCalendar大家是如何管理自己要做的事呢?备忘录?下面看看且行资源提供的方法:自己为这样的事情尝试过很多方法,用手机上的备忘录,输入很麻烦,带上小的便签纸,但经常就丢在口袋里了,而且带笔也不方便,尝试过一些软件,桌面侧边栏,google小工具,或者功能不方便,或者影响速度,或者需要联网限制,或者占用桌...

大数据离线分析平台 JavaSDK数据收集引擎编写

JavaSDK设计规则    JavaSDK提供两个事件触发方法,分别为onChargeSuccess和onChargeRefund。我们在java sdk中通过一个单独的线程来发送线程数据,这样可以减少对业务系统的延时性。 SDK测试   启动集群上的hdfs+nginx+flume进程,通过模拟数据的发送然后将数据发送到nginx服务器中,查看最终是否...