python爬虫伪装,伪装请求头以及使用代理ip



前言

在逐渐深入学习爬虫后每一次的测试都心惊胆战,就像拿了驾照开了一段时间不再是新手,但是更害怕别人“不请自来”。随着对爬虫速度和数量的要求逐渐提高,被封禁的可能性也越来越大,为了大家可以安心学习爬虫,这里附上伪装爬虫的方法,我愿称之为 “大变活虫”。



以下案例仅供学习

一、爬虫都拿走了些什么

在使用爬虫爬取网站时网站会获取你的请求头,ip地址,cookie等信息,以此来简单判断时用户还是爬虫。

通过请求头可以判断出你浏览器型号等,通过ip可以知道你的大致位置,通过cookie可以知道你之前是否登陆过网站。(欢迎补充)

这就像你去车站坐车,不仅需要身份证还需要车票 而身份证上有你的地址姓名年龄等信息。大家可以把爬虫看成自己 而浏览器就是车站。

之前提到过,如果使用的爬虫过于暴露相当于对网站发起了一次攻击,更有甚者,如果是大量爬取网站上的个人信息等,一旦发现就可能直接对ip地址进行封禁。后果就是,你发现你的爬虫爬不到东西了,打开浏览器一看这个网站你都上不去了,但是其他人的缺并无二致。

这里就是我们要伪造请求头和使用代理ip的原因。

二、伪造请求头

实际上在使用过程中很少对请求头封禁的,但是不怕万一就怕一万。

1.下载my-fake-useragent库

我最开始找到的是fake-useragent 但是这个库从18年就不更新了 经过实验,每个请求头都失效了,也不知道是不是我没用好的原因。于是我就找到了这个库,亲测有效。

通过pip即可下载

pip install my-fake-useragent

使用方法:

from my_fake_useragent import UserAgent
import requests

ua = UserAgent(family='chrome')
res = ua.random()
url="https://www.baidu.com"
headers={"User-Agent":res}
response=requests.get(url=url,headers=headers)
print(response.status_code)#打印状态码
print(response.request.headers)#打印自己的请求头

三、使用代理ip

因为平常对ip封禁更多,所以保护自己的ip尤其重要。

使用代理ip有几个方法我挑其中几个详细介绍

1使用动态拨号的方法改变ip

2使用代理ip,网上有许多维护中的代理池,有些需要付费,也有免费的但是不太稳定。

3使用Tor代理服务器

4使用openvpn 改变ip

等等

这里详细介绍使用第二种方法。

很庆幸的是目前在GitHub上以及有一个开源项目 :

​https://github.com/Python3WebSpider/ProxyPool​

在此声明笔者环境为win10

在项目布署中提到需要使用Docker或者Python>=3.6和Redis 环境。

由于Docker对环境要求相比较与Redis比较严格所以这里我选择使用Redis。

1、Redis在win10上的安装

什么是Redis?

Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave。

redis下载地址

​https://github.com/MicrosoftArchive/redis/releases​

具体步骤请参考博客

​基于win10的redis安装和使用​

2、开源项目的使用

GitHub上有一个开源代理池

​https://github.com/Python3WebSpider/ProxyPool.git​

那么如何抓取呢?

1 先将GitHub上源码克隆下来

git clone https://github.com/Python3WebSpider/ProxyPool.git

2安装源码需要的库文件

pip install -r requirements.txt

3打开cmd,切换到Redis下载路径

启动Redis

redis-server

然后打开刚刚克隆下来的代码 我的是放到了默认位置 C:\Users\23\ProxyPool

打开文件夹可以看见其中有一个文件名为run.py 运行它会出现如下界面

八、python爬虫伪装 [免费伪装ip伪装请求头]_tcp/ip

然后打开可视化界面就可以看见抓取的ip

随后可以自己进行二次测试 然后随便使用一个就行 在这里我手动输入了一个验证过的ip

from my_fake_useragent import UserAgent
import requests

from urllib.request import urlretrieve
import re

ua = UserAgent(family='chrome')
res = ua.random()


headers={"User-Agent":res}#伪装请求头
proxies={'http':'117.242.36.205:42252'}#代理ip
response=requests.get(url=url,headers=headers,proxies=proxies)

以上



总结

提示:本文仅用于学习

如有不足欢迎批评指正

文章参考

​基于win10的redis安装和使用​

​IP代理​