防反爬虫机制

许多网站针对爬虫的访问都设置了一定的障碍,这里介绍防反爬虫机制的 3 大技巧。

1)设定程序休止时间

2)设定代理

3)设定 User-Agent

 

 

1)设定程序休止时间

1 import time 
2 
3 time.sleep(n)

 

2)设定代理

代理服务器的存在,可以应对网站禁止某个 IP 访问的反爬虫措施。代理服务器有着不同的匿名类型,通常我们会挑选中、高级别的代理服务器来访问网页。

 示例:

1 # 使用urllib.request的两个方法进行代理的设置
2 proxy = urlrequest.ProxyHandler({'https': '47.91.78.201:3128'})
3 opener = urlrequest.build_opener(proxy)

 

3)设定 User-Agent

网站是可以识别你是否在使用脚本进行爬取,因此需要在你发送网络请求时,把 header 部分伪装成浏览器。

方式1:使用python下非常好用的伪装请求头的库 fake-useragent

安装:pip install fake-useragent

使用示例:

 1 from fake_useragent import UserAgent
 2 
 3 ua = UserAgent()
 4 
 5 # 获取各浏览器的fake-useragent
 6 # ie浏览器的user agent
 7 print(ua.ie)
 8 
 9 # chrome浏览器
10 print(ua.chrome)
11 
12 # safri浏览器
13 print(ua.safari)
14 
15 # 最常用的方式
16 # 写爬虫最实用的是可以随意变换headers,一定要有随机性。支持随机生成请求头
17 print(ua.random)
18 
19 # 请求头
20 headers={"User-Agent":ua.random}

方式2:手工设置

 1 import random
 2 
 3 def get_headers():
 4 
 5 
 6     useragent_list = [
 7         'Mozilla/5.0 (Windows NT 6.1; rv,2.0.1) Gecko/20100101 Firefox/4.0.1',
 8         'Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.8.131 Version/11.11',
 9         'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',
10         'Mozilla/5.0 (Windows NT 6.1; rv,2.0.1) Gecko/20100101 Firefox/4.0.1',
11         'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36',
12         'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.9.2.1000 Chrome/39.0.2146.0 Safari/537.36',
13         'Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11',
14         'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3',
15         'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3',
16         'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/532.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/532.3',
17         'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5',
18         'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36'
19     ]
20 
21 
22     useragent = random.choice(useragent_list)
23     header = {'User-Agent': useragent}
24     return header

 

 

posted @ 2020-12-06 23:13  Juno3550  阅读(419)  评论(0编辑  收藏  举报