您的位置: 首页 > 新闻资讯 > 正文

python爬虫对抗反爬虫策略有哪些技巧?

发布时间:2019-10-25 17:43:11 来源:黑洞代理

python爬虫对抗反爬虫策略有哪些技巧?爬虫工作因为很多网站都有反爬虫措施,所以很容易被封IP,就不能继续爬了。在爬取大数据量的数据时更是胆战心惊,如履薄冰,时刻担心着下一秒IP可能就被封了。本文整理了一些小技巧来应对这些反爬策略,这些小技巧可以单独使用,也可以同时使用,效果更好。

python爬虫对抗反爬虫策略有哪些技巧?

一、伪造User-Agent

在请求头中把User-Agent设置成浏览器中的User-Agent,来伪造浏览器访问。比如:

headers = {'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'}

resp = requests.get(url,headers = headers)

还可以先收集多种浏览器的User-Agent,每次发起请求时随机从中选一个使用,可以进一步提高安全性:

import requests,random

user_agents = ['Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1','Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50','Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11']

def get_html(url):

headers = {'User-Agent':random.choice(user_agents)}

resp = requests.get(url,headers = headers)

return resp.text

把上面随机选择一个User-Agent的代码封装成一个函数:

import random

def get_headers():

'''

随机获取一个headers

'''

user_agents = ['Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1','Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50','Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11']

headers = {'User-Agent':random.choice(user_agents)}

return headers

二、随机休眠

在每次重复爬取之间设置一个随机时间间隔

比如:

time.sleep(random.randint(0,3)) # 暂停0~3秒的整数秒,时间区间:[0,3]

或:

time.sleep(random.random()) # 暂停0~1秒,时间区间:[0,1)

三、伪造cookies

若从浏览器中可以正常访问一个页面,则可以将浏览器中的cookies复制过来使用,比如:

cookies = dict(uuid='b18f0e70-8705-470d-bc4b-09a8da617e15',UM_distinctid='15d188be71d50-013c49b12ec14a-3f73035d-100200-15d188be71ffd')

resp = requests.get(url,cookies = cookies)

# 把浏览器的cookies字符串转成字典

def cookies2dict(cookies):

items = cookies.split(';')

d = {}

for item in items:

kv = item.split('=',1)

k = kv[0]

v = kv[1]

d[k] = v

return d

四、使用代理IP

可以换着用多个代理IP来进行访问,防止同一个IP发起过多请求而被封IP,比如:

proxies = {'http':'http://100.10.100.86:66666','https':'https://100.10.100.86:66666'}

resp = requests.get(url,proxies = proxies)推荐阅读:如何选择合适的代理服务器供应商

# 注:黑洞代理提供高效稳定的优质代理IP,有短效优质代理、一手私密代理、独享IP池等多种套餐可供选择,满足各种不同的业务场景,网址:https://www.zdaye.com

不同的网站有不同的反爬虫策略,但魔高一尺道高一丈,只要我们去分析,去总结,反反爬虫小技巧也能研究出一大堆来,为爬虫工作提供便利,让爬虫工作持续稳定的进行下去。

相关文章内容简介

1 python爬虫对抗反爬虫策略有哪些技巧?

python爬虫对抗反爬虫策略有哪些技巧?爬虫工作因为很多网站都有反爬虫措施,所以很容易被封IP,就不能继续爬了。在爬取大数据量的数据时更是胆战心惊,如履薄冰,时刻担心着下一秒IP可能就被封了。本文整理了一些小技巧来应对这些反爬策略,这些小技巧可以单独使用,也可以同时使用,效果更好。一、伪造User-Agent在请求头中把User-Agent设置成浏览器中... [阅读全文]

最新标签