2021年给自己定下了目标,一个月2篇博客,31号冲刺一下。希望今后能经常总结记录,到时候回头看可以加深自己的记忆,比丢在备忘录里面也好检索一点。而且我没有总结的习惯,真的很不好。
这篇博客主要是简单总结一下之前本科毕设的使用过的各种代理,主要包括功能和使用方法。通常代理分为HTTP代理和SOCKS代理,SOCKS代理分为SOCKS4和SOCKS5,像Tor和Shadowsocks都是SOCKS5代理。
Tor
目前暗网大多都是Tor暗网,不能直接访问,需要通过Tor代理访问。Tor项目提供了Tor浏览器和Tor源码,都是开源的。Tor浏览器就是基于火狐的一个集成浏览器,通常来说Tor浏览器已经能满足基本的用户需求。(还是要翻墙的,不然链路建立不起来)
但是涉及到通过终端或其他方式实现匿名访问资源,或者更灵活的使用Tor代理,基本上就会选择Tor源码。
其实Tor官网的配置说的比较详细,macOS上的配置,但是其实我在学习过程中首先第一获取使用方法的还是博客,因为比较简单明了,本着能用就行的想法,但是也会导致很多问题。
Simple Tor setup on macOS 是一篇在Mac上配置Tor代理的文章,各种利用方法都说的比较清楚,可以根据自己不同需求选择配置方法,但是这里不太推荐通过系统偏好设置来进行配置,太麻烦了。
比较通用的方法是,下载完Tor之后,通过/usr/local/etc/tor/torrc.sample
修改配置。
首先将torrc.sample拷贝为torrc。
在末尾添加shadowsocks代理,1086为具体的Shadowsocks的本地socks5监听端口,在高级设置里面查看。
1 | Socks5Proxy 127.0.0.1:1086 |
ProxyChains
macOS中的新版本叫ProxyChains-ng,ProxyChains一个强制应用的 TCP 连接通过代理的工具,通过一个或多个SOCKS/HTTP代理对连接进行重定向。
ProxyChains还是非常好用的,比如说让终端命令行走Shadowsocks代理,让爬虫走Tor代理,除了强制应用走代理之外,因为ProxyChains同时支持SOCKS和HTTP代理的,所以可以实现SOCKS和HTTP代理的转换。
项目的GitHub中关于ProxyChains的介绍和具体使用方法还是非常详细的,在When to use it ?这一节中可以很好的理解它的使用场景,macOS上的安装和配置可以参考proxychains-ng的github。
下载完成后在/usr/local/etc/proxychains.conf
中配置proxychains,在ProxyList中添加代理,默认是Tor代理,9050是Tor源码的监听端口,终端运行时在命令前加上proxychains4运行即可。
1 | [ProxyList] |
Polipo
Polipo是一个轻量级、快速、小内存占用的跨平台Web代理,同时实现SOCKS和HTTP的代理,实现一个TCP/IP上的多路复用。通常是用于从SOCKS代理到HTTP代理的转换。
Using tor with Polipo对Tor + Polipo组合很好的介绍
Tor + Polipo 和 Tor + Privoxy是经常被提起的组合, Shadowsocks, Polipo, Proxychains安装及配置中提到Polipo并不能指定某个软件以代理的方式运行,要使用Proxychains来进行强制代理,这种类似的组合在Tor暗网爬虫的一些要点中也有。应该是希望通过Polipo转换Shadowsocks/Tor的Socks5和浏览器/scrapy的HTTP,但是其实Tor + ProxyChains的组合是能够满足需求了,因为ProxyChains本身也可以进行代理之间转换。
Tor与Scrapy实现暗网爬虫
Tor的话,基本上和爬虫结合的比较多,这里主要是一些写的比较好的博客,可以参考参考。
Scrapy 和 Tor Shadowsocks + Tor + privoxy
Tor暗网爬虫的一些要点 Shadowsocks + Tor + Polipo/privoxy + proxychains
但是这里建议尝试Shadowsocks + Tor + proxychains直接实现爬虫,也是可行的。
HAProxy
HAProxy是一个用于负载均衡的代理,它通过ACL制定规则来实现负载均衡。
HAProxy 之 ACL介绍和使用是一篇比较好的关于HAProxy中ACL的配置的文章。
接触HAProxy的原因也比较神奇,在完成暗网爬虫后,发现数据库的连接存在问题,当时咨询了一下大佬(Tor暗网爬虫的一些要点 的博主),推测是当scrapy爬虫的所有连接都被proxychains重定向到Tor后,数据库本地连接出现问题,这里通过使用HAProxy对proxychains的所有流量进行一个二次分流,来实现数据库本地连接和Web资源请求的区分。基本逻辑如下:
1 | #/etc/haproxy/haproxy.cfg |
但是对HAProxy的使用也仅限与此,之后没有再使用这个代理,所以了解的比较有限,它的功能应该还有很多值得挖掘的地方。
小结
这些代理其实是本科毕设的时候实现暗网爬虫涉及到的一些代理,感觉还是非常繁琐的,目前比较遗憾的地方就是没有使用过Privoxy,所以没办法很好的进行一个比较;同时HAProxy这一步是否有必要也是之前一直在思考的一个问题,目前也并没有得出答案。
这篇博客可能存在错误的地方,欢迎大家指正,可能实现暗网爬虫能有更方便的方法,欢迎交流,最后希望能提供一些参考价值。