how to create proxies pool
2016-04-20 23:54
417 查看
How to code a proxies pool
代理的基本知识
代理服务器类型很多:HTTP代理,FTP代理,SOCKS代理。各种代理的特性如下:HTTP代理:能够代理客户机的HTTP访问,主要是代理浏览器访问网页,它的端口一般为80、8080、3128等。
FTP代理:能够代理客户机上的FTP软件访问FTP服务器,它的端口一般为21、2121。
RTSP代理:代理客户机上的Realplayer访问Real流媒体服务器的代理,其端口一般为554。
POP3代理:代理客户机上的邮件软件用POP3方式收发邮件,端口一般为110。
SOCKS代理:SOCKS代理与其他类型的代理不同,它只是简单地传递数据包,而并不关心是何种应用协议,既可以是HTTP请求,所以SOCKS代理服务器比其他类型的代理服务器速度要快得多。SOCKS代理又分为SOCKS4和SOCKS5,二者不同的是SOCKS4代理只支持TCP协议(即传输控制协议),而SOCKS5代理则既支持TCP协议又支持UDP协议(即用户数据包协议),还支持各种身份验证机制、服务器端域名解析等。SOCK4能做到的SOCKS5都可得到,但SOCKS5能够做到的SOCKS则不一定能做到,比如我们常用的聊天工具QQ在使用代理时就要求用SOCKS5代理,因为它需要使用UDP协议来传输数据。
HTTP代理相关知识
透明代理:也叫普通代理,它不但改变了我们的请求信息,还会传送真实的IP地址。从:HTTP_X_FORWARDED_FOR等代理信息可以查到我们IP地址!匿名代理:普通匿名代理,它能隐藏客户机的真实IP,但会改变我们的请求信息。它不传送正式ip,但是可能会发送HTTP_VIA、HTTP_PROXY_CONNECTION
信息,还是可以通过这些判断出使用了代理!
高级匿名代理:不改变客户机的请求,这样在服务器看来就像有个真正的客户浏览器在访问它,这时客户的真实IP是隐藏的,服务器端不会认为我们使用了代理!
HTTP通道:http代理服务器支持Connect请求,这类代理服务器基本可以代理所有软件,如:QQ,FoxMail,FTP等等,不支持通道的HTTP代理,基本上只支持简单的Http
GET,POST等请求服务!
###SOCKS代理知识
SOCKS5:常见SOCKS代理有Socks4,socks5,不过目前基本上以socks5代理为主,它基本支持所有客户端请求协议,Http,Ftp,Smtp等,可以具备高级匿名代理隐藏功能!
运用场景
这在某些情况下比较有用,比如IP被封了,或者比如IP访问的次数受到限制等等。
爬虫抓取思路
分布式爬虫ip代理池
设置延迟抓取
网站反爬思路
针对并发数高的爬虫,可手工识别;也可在服务器端设置每个ip连接次数。通过User-Agent识别爬虫。此种情况下是针对并发连接数不是很高的爬虫而设置的。
通过网站流量统计系统和日志分析来识别爬虫。有些爬虫喜欢修改User-Agent信息来伪装自己,把自己伪装成一个真实浏览器的User-Agent信息,让你无法有效的识别。这种情况下我们可以通过网站流量系统记录的真实用户访问IP来进行识别。
网站的实时反爬虫防火墙实现策略
思路
定时抓代理页面,然后分析后提取.定时获取代理源,根据需要测试的目标网站,用代理ip进行速度,超时等一些性能指标的测试.以便获取针对目标网站抓取的最佳ip.
亮点难点
就是要根据若干提供的目标网站,做多重判定(测试到每个目标网站的速度,超时).
代理池现状
一般的代理网站只有单一测试. 改进思路: 构建一个目标网站测试url池.
编写代理池相关网页
互联网网站的反爬虫策略浅析Python简单抓取原理引出分布式爬虫
代理666
代理IP自动切换的方法
鲲鹏Web数据抓取
- 专业Web数据采集服务提供商
鲲鹏免费HTTP代理列表(每3小时更新一次)
一种基于连接代理优化管理的多线程网络爬虫处理方法
用python爬虫抓站的一些技巧总结
再次复活你的goagent代理
含代理数据相关网页
[-] http://blog.chinaunix.net/uid-23500957-id-3794837.html[-] https://linuxtoy.org/archives/python-ip.html
[*] http://proxy.ipcn.org/proxylist.html
[*] http://proxylist.hidemyass.com/
[*] http://proxy.com.ru/
[*] http://www.kuaidaili.com/
#proxy
相关文章推荐
- JavaScript中函数的四种调用模式
- bzoj2618【CQOI2006】凸多边形
- iOS多边形按键的创建
- java线程池和关闭线程池中的线程
- 自学Android开发日志
- Stanford大学机器学习公开课(四):牛顿法、指数分布族、广义线性模型
- ENVI【非监督分类】
- 在android中使用Get方式提交数据
- oracle学习 第四章 单行函数 ——02
- bzoj1038【ZJOI2008】瞭望塔
- android:screenorientation
- TCP流量控制问题
- 未命名类别
- js中的json
- Stanford大学机器学习公开课(三):局部加权回归、最小二乘的概率解释、逻辑回归、感知器算法
- 数组求和方法比较
- 互联网网站的反爬虫策略浅析
- C++异常what()函数重写
- 打Log 轻松理解getDimension getDimensionPixelOffset getDimensionPixelSize
- Linux基础11_条件判断及回圈