代理ip采集器(1)

还没撸完码,但是撸了一半了,校验那块撸的差不多了,这次代码就不贴在这边了,有空丢github上面.下篇再给上地址了.这次就大概说下自己的思路:

代理ip采集器(1)_第1张图片

整体的架构就如上图了,库用的是redis内存数据库.其实与其说是库还不如说是队列,我用的是go写的,这块写成一个接口,可以使用go map实现队列,也可以使用redis或者其它方式去实现都行,这写都是细节.采集器最核心的部分是代理的判断,不是很难,但是也不算简单.目前想不到怎么在tcp判断那块实现两次握手,因为三次握手是已经建立了连接了,释放连接的时候更是需要4次,所以这块的性能损耗很大.这块目前整的是三次握手四次释放.另外需要明白的是上面4种代理的区别:

http代理是建立在tcp协议上面的,同样https,即TLS/SSL也是建立在tcp上面的.另外就是socket5和socket4的区别,socket5为socket4的升级版,socket4只支持tcp,而socket5不仅支持tcp还支持udp以及各种验证.如果了解了上面四种协议的话校验这块就不难了.

另外还有一点就是采集的时候需要初始化ip库,这块就采用开源 的ip库了,因为都是已经整理好的(拿来主义~~~).还有一个端口的问题,毕竟一台主机端口有2<<15-1个端口,所以这里又有两种方案,1是端口扫描,2是采用常用端口,比如8088之类的.

整体情况差不多就这样的了.剩下的就继续撸吧~

你可能感兴趣的:(编程实践)