爬虫ip代理服务器的简要思路

爬虫有的时候会遇到被禁ip的情况,这个时候你可以找一下代理网站,抓取一下ip,来进行动态的轮询就没问题了,也可以用别人做好的第三方ip代理平台,比如说crawlera,crawlera是一个利用代理IP地址池来做分布式下载的第三方平台,除了scrapy可以用以外,普通的java、php、python等都可以通过curl的方式来调用,具体如何设置可以查看 crawlera使用指南



如果不使用第三方的平台做代理ip,我们就必须得手动抓取ip了,可以google搜索代理ip,可以找到一大堆网站,找几个稳定的代理网站,可以写一个爬虫脚本持续抓取,要是使用量不大的话,也可以手动粘贴抓取,要是土豪一点呢就买一点其实也可以,大概1块钱可以买几千个,还是挺值得的。


这时候如果你使用的是python,你需要自己维护一个ip池,控制每个ip的访问次数,随机更换ip什么的,但是如果你想做成服务化,你可以使用Squid绑定多个ip地址,做正向代理,Squid是一种在Linux系统下使用的比较优秀的代理服务器软件,把代理列表的代理ip,按照squid的cache_peer机制按照一定格式,写在配置文件中即可。


这个就相当于将管理和调度的问题全交给了squid来做,你只需要使用爬虫访问squid的服务端口就可以了。


现在可以将所有步骤归纳总结一下:

1.利用爬虫脚本每天定时抓取代理网站上的免费ip,或者买一定数量的ip,写入mongodb或者其他的数据库中,这张表作为原始表。


2.使用之前需要做一步测试,就是测试这个ip是否有效,方法就是利用curl访问一个网站查看返回值,需要创建一张新表,循环读取原始表有效则插入,验证之后将其从原始表中删除,验证的同时可以利用响应时间来计算这个ip的质量,和最大使用次数,有一个算法可以参考一种基于连接代理优化管理的多线程网络爬虫处理方法。


3.将有效的ip写入squid的配置文件,重新加载配置文件。


4.让爬虫程序去指定的squid的服务ip和端口,进行抓取。






如果需要详细了解ip代理,可以参考以下网页


可以参考的网站:

Linux IP代理筛选系统(shell+proxy) 

http://blog.csdn.net/ithomer/article/details/7639385 



Linux 抓取网页实例(shell+awk)

http://blog.csdn.net/sunboy_2050/article/details/7635301



关于使用动态轮训切换ip防止爬虫被封杀 http://xiaorui.cc/2015/01/12/%E5%85%B3%E4%BA%8E%E4%BD%BF%E7%94%A8%E5%8A%A8%E6%80%81%E8%BD%AE%E8%AE%AD%E5%88%87%E6%8D%A2ip%E9%98%B2%E6%AD%A2%E7%88%AC%E8%99%AB%E8%A2%AB%E5%B0%81%E6%9D%80/

你可能感兴趣的:(python网络爬虫)