爬虫02-代理IP和伪造用户代理

在爬取数据的过程中,我们会经常遇到一些反爬机制,常见的反爬机制有:

1、封杀爬虫程序

2、封杀指定IP

3、封杀非人操作的程序

4、验证码等

在不同的浏览器发送请求的时候,会有不同的User-Agent头,服务器通过查看User-Agent来判断谁在访问

上一节我们用urllib来获取网页数据,urllib中默认的User-Agent中会有python的字样,服务器可以通过检查UA将我们拒之门外

下面我们通过伪造UA来访问网站

from urllib import request
url = 'http://www.csdn.net/'
headers = {'User-Agent': 'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 '
                         '(KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19'}
# 创建request对象
req = request.Request(url, headers=headers)
req.add_header('Connection', 'keep-alive')
response = request.urlopen(req)
html = response.read().decode()
print(html)

有时我们爬取某个网站时,我们的IP会被封掉,为了防止我们的IP被封就需要用代理IP了

from urllib import request 
url = 'http://www.baidu.com/'
proxy = {'http': '120.24.152.123:3128'}
proxy_support = request.ProxyHandler(proxy)
opener = request.build_opener(proxy_support)
opener.addheaders=[('User-Agent', 'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 '
                                  '(KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19)')]
request.install_opener(opener)
response = request.urlopen(url)
html = response.read().decode()
print(html)

一个爬虫去访问某个网站一分钟可以访问几十次,而一个人正常的访问某个网站一分钟可能就访问几次,为了爬虫程序被服务器识别出来,我们需要动态的设置UA和IP,或者在爬取页面时设置延时,这样能延长爬虫的存活时间

猜你喜欢

转载自blog.csdn.net/qwerLoL123456/article/details/82492892
今日推荐