在我们平时使用爬虫程序采集数据时,经常会遇到因采集速度过快导致自己的IP地址被目标网站封禁,有时候会封几分钟,有时候是封一天。这不仅会导致局域网内其他人也无法访问目标网站,还会阻碍我们的数据采集。为了保证正常采集数据且本地IP不被封禁,我们一般会使用代理IP。
爬虫最好用高匿代理,高匿名代理不改变客户机的请求,这样在服务器看来就像有个真正的客户浏览器在访问它,这时客户的真实IP是隐藏的,服务器端不会认为我们使用了代理。我们爬虫程序一般使用的是神龙HTTP代理IP,质量稳定可用率高。
requests库使用代理IP
# 准备好的代理ip
proxy = "127.0.0.1:8000"
proxies = {
"https": "https://{0}".format(proxy),
"http": "http://{0}".format(proxy),
}
res = requests.get(url, proxies=proxies)
以上代码片段是最简单的requests库实现代理IP执行get请求。
线上爬虫使用代理IP方案
目前爬虫使用代理的方法很多,这里我简单说说我在线上环境使用代理的心得。
首先,我自己维护了一个代理IP池,这个IP池是放在redis中的,也就是说我的所有可使用的代理IP是放在redis中,使用redis的set数据结构。
scrapy使用代理IP
class RandomProxyMiddleware(object):
def __init__(self):
settings = get_project_settings()
self.PROXY_REDIS_HOST = settings.get('PROXY_REDIS_HOST')
self.PROXY_REDIS_PORT = settings.get('PROXY_REDIS_PORT')
self.PROXY_REDIS_PARAMS = settings.get('PROXY_REDIS_PARAMS')
self.PROXY_REDIS_KEY = settings.get('PROXY_REDIS_KEY')
self.pool = redis.ConnectionPool(host=self.PROXY_REDIS_HOST,
port=self.PROXY_REDIS_PORT,
db=self.PROXY_REDIS_PARAMS['db'],
password=self.PROXY_REDIS_PARAMS['password'])
self.conn = redis.StrictRedis(connection_pool=self.pool)
def process_request(self, request, spider):
proxy = self.conn.srandmember(self.PROXY_REDIS_KEY)
proxy = proxy.decode('utf-8')
proxy = json.loads(proxy)
ip = proxy['proxy']
request.meta['proxy'] = "https://%s" % ip
上面代码片段自定义一个代理中间件RandomProxyMiddleware,在scrapyprocess_request(self, request, spider)这个方法中使用redis的操作随机获取一个代理出来,加到request.meta['proxy']中,便完成了代理中间件的编写。随后把RandomProxyMiddleware加到setting文件中,
DOWNLOADER_MIDDLEWARES = {
'crawl_spider.middlewares.RandomProxyMiddleware': 400,
}
便可完成scrapy增加代理的需求。
相关文章
- 利用爬虫代理进行数据爬取(详解爬虫代理的运用技巧)
- http代理ip是什么意思
- 什么是https正向代理?
- 全局HTTP代理设置教程及常见问题解答
- 爬虫HTTP代理
- HTTP代理是什么
- 爬虫代理的实现方式和防封策略
- http代理的实现和优化策略
- 为什么使用代理爬虫还是失败?
- 爬虫怎么设置代理服务器
- 分布式爬虫如何使用代理ip
- 爬虫使用IP代理还是会封IP吗
- 爬虫代理服务器怎么用
- python爬虫如何代理服务器
- 盘点爬虫IP代理使用的常见问题及解决思路
- ADSL和代理IP有什么区别?
- 浅析爬虫代理报错的原因
- 盘点IP代理中的虚拟IP和家用上网IP有何不同?
- 爬虫离开代理IP后还能否顺畅工作
- 爬虫HTTP代理可以收集哪些数据?
- 正确认识网络抓取与网络爬取的区别
- 建立自己的代理IP池的好处?-神龙HTTP
- 代理IP适合几个日常工作的场景?-神龙HTTP
- 如何看待免费代理IP的安全性-神龙HTTP
- 为什么要用换ip工具?-神龙HTTP
- IP切换工具的应用方法-神龙HTTP
- 网络爬虫爬取数据时常见的六种问题-神龙HTTP
- 盘点导致使用代理IP后网速变慢的几种原因-神龙HTTP
- 代理ip池的有效性取决于哪些因素?-神龙HTTP
- http代理服务器如何帮助维护在线隐私-神龙HTTP
- 盘点如何从网站中提取数据?-神龙HTTP
- 使用http代理进行优化SEO有什么好处?-神龙HTTP
- 代理服务器和负载均衡器有什么区别?-神龙HTTP
- HTTP 代理服务器的架构-神龙HTTP
- 免费代理ip适用的范围-神龙HTTP
- 盘点代理IP池如何维护-神龙HTTP
- 免费代理ip和收费代理ip的区别-神龙HTTP
- 如何判断代理服务器ip质量?-神龙HTTP
- 自建http代理IP池如何考虑高频接入的要求-神龙HTTP
- 为什么说代理IP池越大越好?-神龙HTTP
- 代理IP为什么要使用高匿代理IP呢?-神龙HTTP
- 代理IP能按时间分类吗?-神龙HTTP
- socks5代理地址连接的重要性-神龙HTTP
- 付费SOCKS5代理的四个优点-神龙HTTP
- 盘点代理IP选择按流量计费贵么?-神龙HTTP
- IP代理池具备的特征-神龙HTTP
- 网络抓取网站总是被阻止怎么办?
- 使用ip代理时的常见误解-神龙HTTP
- 付费与免费的IP代理具体有何区别?-神龙HTTP
- SOCKS和HTTP代理有什么区别?-神龙HTTP
- Socks5代理如何解决在线问题?-神龙HTTP
- http代理工作方式介绍-神龙HTTP
- 住宅代理服务器的用途及优势分析-神龙HTTP
- 为什么在抓取网页时需要使用http代理呢?-神龙HTTP
- HTTP代理常见的客户端错误代码类型-神龙HTTP
- SOCKS代理和SOCKS5代理区别是什么?-神龙HTTP
- 代理ip是如何解决爬虫ip被封的-神龙HTTP
- 稳定的代理IP具备的因素-神龙HTTP
- python爬虫怎么使用代理IP-神龙HTTP
- HTTP代理IP如何运用-神龙HTTP
- 代理服务器介绍及类型划分-神龙HTTP
- IP代理具有哪些类型原理-神龙HTTP
- 代理IP能否提高爬虫效率?-神龙HTTP
- 不同的代理服务器有什么区别?-神龙HTTP
- 动态IP地址应该在什么情况下使用呢?-神龙HTTP
- 代理一般是如何定价收费的呢?-神龙HTTP
- 代理服务器介绍及类型划分-神龙HTTP
- 如何使用代理ip访问浏览器?-神龙HTTP
- 认识代理服务器的请求处理规则-神龙HTTP
- 什么是动态IP代理-神龙HTTP
- socks5代理和http代理有什么区别呢?-神龙HTTP
- 什么是动态IP?动态IP的作用什么?-神龙HTTP
- 认识IP代理是什么?-神龙HTTP
- 如何判断ip代理是否能用?-神龙HTTP
- 如何选择合适的http代理?-神龙HTTP
- 盘点判断使用的代理IP是否有效的几种方式?-神龙HTTP
- 为什么代理IP爬虫不会受到限制?-神龙HTTP
- 盘点优质代理ip为用户省去的诸多问题-神龙HTTP
- 代理ip业务结束后,可以用新的IP继续发帖吗?-神龙HTTP
- 如何理解代理IP中大数据杀熟的意思
- 动态IP地址的优缺点分析
- 怎么判断SOCKS5代理IP地址是有效的?-神龙HTTP
- 改变ip地址的原理和作用-神龙HTTP
- 爬虫的抓取效率怎么去提升-神龙HTTP
- 盘点什么样的代理IP更适合爬虫?-神龙HTTP
- 简易的HTTP代理服务器怎么实现?-神龙HTTP
- 静态IP、动态IP、ADSL拨号的区别-神龙HTTP
- 使用代理ip软件要了解的优势
- 爬虫利用代理ip突破频率限制-神龙HTTP
- 使用代理IP后常见的几大问题-神龙HTTP
- 怎么测试和评定代理商IP的实际效果-神龙HTTP
- 使用HTTP协议的代理服务器有哪些类型
- 如何为Scrapy设置代理-神龙HTTP
- 如何使用Python进行网页抓取-神龙HTTP
- 怎么维护爬虫代理IP池?-神龙HTTP
- HTTP代理IP平台哪个好,选择代理IP要考虑哪些 -神龙HTTP
- 网络爬虫对代理IP有哪些要求-神龙HTTP
- 爬虫可以爬哪些网站-神龙HTTP
- 为什么代理ip越来越普遍-神龙HTTP
- 使用HTTP代理IP过程中的误区 -神龙HTTP
- 爬虫代理IP池的验证网址出错-神龙HTTP
- 怎么使用Socks5代理IP上网-神龙HTTP
- ip被封锁限制的解决方法-神龙HTTP
- 动态IP在网络爬虫中有什么作用?-神龙HTTP
- 动态IP能用来做什么?-神龙HTTP
- 短效优质代理多线程获取IP方法-神龙HTTP
- 用ip代理解决网络受阻-神龙HTTP
- 代理IP连不通是一定是代理IP的问题?-神龙HTTP
- 爬虫程序使用IP代理的原理-神龙HTTP
- HTTPS协议性能优化介绍-神龙HTTP
- python爬虫爬微信好友信息代码(下)-神龙HTTP
- python爬虫爬微信好友信息代码(上)-神龙HTTP
- HTTP代理和SOCKS代理的区别-神龙HTTP
- 网络爬虫是什么?-神龙HTTP
- HTTP代理的四大问题-神龙HTTP
- 网站为什么要反爬虫?-神龙HTTP
- Scrapy爬虫框架的五大组件-神龙HTTP
- 选择代理IP资源应该注意什么?
- Socks4与Socks5代理的区别-神龙HTTP
- 爬虫工程师要怎样练习爬虫-神龙HTTP
- 浅谈代理IP中白名单的作用-神龙HTTP
- Python爬虫又叫网络爬虫-神龙HTTP
- 分布式网络爬虫是什么?神龙HTTP
- 基于Requests库的爬虫代理配置-神龙HTTP
- 关于HTTP代理的几个解答-神龙HTTP
- 爬虫代理超时原因及排查方法-神龙HTTP
- 爬虫与User-Agent-神龙HTTP
- 住宅代理和数据中心代理的区别-神龙HTTP
- 使用代理IP爬虫时超时怎么办?-神龙HTTP
- HTTP代理的分类和应用范围-神龙HTTP
- 网络爬虫IP受限该怎么解决?-神龙HTTP
- 网站如何反爬虫-神龙HTTP
- 怎样使用代理IP让爬虫效率最大化-神龙HTTP
- 爬虫采集数据如何防被封IP?-神龙HTTP
- 网络爬虫一定要用ip代理吗?神龙HTTP
- 为什么电脑ip会被封-神龙HTTP