Scrapy防止反爬
通常防止爬虫被反主要有以下几个策略:
• 动态设置User-Agent(随机切换User-Agent,模拟不同用户的浏览器信息,可以使用组件scrapy-random-useragent)
• 禁用Cookies(对于简单网站可以不启用cookies middleware,不向Server发送cookies,有些网站通过cookie的使用发现爬虫行为)可以通过COOKIES_ENABLED 控制 CookiesMiddleware 开启或关闭
• 启用Cookies(对于复杂网站,需要使用无头浏览器scrapy-splash获取js生成的复杂cookies
• 设置延迟下载(防止访问过于频繁,设置为 2秒 或更高)
• Google Cache 和 Baidu Cache:如果可能的话,使用谷歌/百度等搜索引擎服务器页面缓存获取页面数据。
• Referer 使用假的来源,比如百度带关键词的链接
• 使用IP地址池:现在大部分网站都是根据IP来ban的,可以通过亿牛云海量定制代理理池突破
• 使用 亿牛云爬虫代理组件代码。
#! -- encoding:utf-8 --
import base64
import sys
import random
PY3 = sys.version_info[0] >= 3
def base64ify(bytes_or_str):
if PY3 and isinstance(bytes_or_str, str):
input_bytes = bytes_or_str.encode(‘utf8’)
else:
input_bytes = bytes_or_str
output_bytes = base64.urlsafe_b64encode(input_bytes)
if PY3:
return output_bytes.decode(‘ascii’)
else:
return output_bytes
class ProxyMiddleware(object):
def process_request(self, request, spider):
# 代理服务器(产品官网 www.16yun.cn)
proxyHost = “t.16yun.cn”
proxyPort = “31111”
# 代理隧道验证信息
proxyUser = “username”
proxyPass = “password”
request.meta[‘proxy’] = “http://{0}:{1}”.format(proxyHost,proxyPort)
# 添加验证头
enc
爬虫代理Scrapy框架详细介绍3
最新推荐文章于 2024-08-26 09:42:44 发布
本文详细介绍了Scrapy防止反爬的多种策略,包括动态设置User-Agent、禁用或启用Cookies、设置延迟下载、使用Google/Baidu Cache、伪造Referer、使用IP地址池以及如何使用Scrapy的下载中间件实现代理IP和User-Agent的切换。同时,提供了自定义下载中间件的代码示例,以及USER_AGENTS和PROXIES的设置方法。
摘要由CSDN通过智能技术生成