博文配套视频课程:24小时实现从零到AI人工智能
反爬虫技术
- 判断User-Agent,是否为浏览器
- 判断短时间内一个IP的访问次数
- 有些资源必须用户登录后才能访问
- 短时间同一个用户使用不同IP访问资源
- 异常登录 验证码,滑动单击验证 数据加密处理
爬虫技术
- User-Agent:发起请求时添加头信息
- 伪装浏览器 短时间内访问次数限制
- 可以使用代理或者设置延迟爬取
- 登录后访问,模拟登录保存cookie,请求时添加cookie信息
- 异常登录:准备大量账号,绑定不同代理进行爬取
- 验证码:使用OCR,机器学习进行处理,或者第三方API 使用selenium进行抓取操作
随机User-Agent设置
百度输入:scrapy user agent 获取随机的agent列表
import random
class my_useragent(object):
def process_request(self,request,spider):
USER_AGENT_LIST = [
'MSIE (MSIE 6.0; X11; Linux; i686) Opera 7.23',
'Opera/9.20 (Macintosh; Intel Mac OS X; U; en)',
'Opera/9.0 (Macintosh; PPC Mac OS X; U; en)',
'iTunes/9.0.3 (Macintosh; U; Intel Mac OS X 10_6_2; en-ca)',
'Mozilla/4.76 [en_jp] (X11; U; SunOS 5.8 sun4u)',
'iTunes/4.2 (Macintosh; U; PPC Mac OS X 10.2)',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:5.0) Gecko/20100101 Firefox/5.0',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0) Gecko/20100101 Firefox/9.0',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:16.0) Gecko/20120813 Firefox/16.0',
'Mozilla/4.77 [en] (X11; I; IRIX;64 6.5 IP30)',
'Mozilla/4.8 [en] (X11; U; SunOS; 5.7 sun4u)'
]
agent = random.choice(USER_AGENT_LIST)
request.headers['User-Agent'] = agent