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代理