温馨提示: 豌豆仅提供国内节点,不提供境外节点,不能用于任何非法用途,不能访问境外网站及跨境联网。

免费领取1万IP!

暗网爬虫实战(windows+linux下shadowsocks+Tor+Privoxy的配置)

发布时间:

一、梯子环境配置
1、shadow[分开分开]socks
梯子很关键,不然下面很多资源和站点都访问不了。
可以来这里购买梯子,用了好长时间,很稳定,也不贵
买好梯子的服务之后,就找网站的客服拿一个shadow[分开分开]socks的客户端,(反正有啥不懂的直接问客服就行了)然后很简单就可以配置好,选择:全局代理。
2、Vidalia Bridge Bundle
先到这里下载
安装好之后,到 设定->外观->语言,可以选简体中文
![Uploading Paste_Image_965574.png . . .]

启动tor网络
tor网络设置,使用代理网络socks5
设置仅运行客户端功能,不作为tor的中继节点

3、通过浏览器访问tor测试站点,结果

tor的测试

(如果你使用的是 Tor Browser Bundle 内置的 Firefox,就无需再额外配置浏览器代理了)
  早先的 TOR 客户端同时提供 HTTP 代理和 SOCKS,大概从 2013年开始,新版本的客户端不再提供 HTTP 代理了。所以原先的 8118 代理端口也就废弃了。
  今后大伙儿需要用 TOR 提供的 SOCKS 代理来上网,端口号如下:
9150(2.3.25版本之后的 Tor Browser Bundle 软件包)
9050(其它的软件包)
4、

为了做一些统计和收集,需要到 Tor 这个暗网上采集大量信息。想起很久以前为了下载 Scream Bitch 和 PlayPen 的资源写过几个爬虫,拿来用 scrapy 重构了一番,做了一个 Tor 暗网通用爬虫。

首先,在 Tor 网络上爬东西和在明网上并没有多少不同,因为 Tor 方面只是在本地开了一个 socks5 代理,基本上让爬虫走 tor 的方法和设置程序走任何 socks5 代理的方法是一样的。在中国由于 shadowsocks 的盛行所以实际上没有太多挑战,设置方法都一样,指定 all_proxy 为 socks5://127.0.0.1:9150(有些是9050,两个端口都应该测试一下) 即可。

因为 dns 查询默认是不走 tor 的 socks5 代理的,如果直接把爬虫的 all_proxy 指过去却不管 dns,所有 .onion 域名当然是 NXDOMAIN 了。。所以爬虫内设置代理一定要注意这些。

scrapy 有自己支持 HTTP 代理,但是我们可以不用这个代理,要走暗网的话当然是期望一丝不漏地把流量全都从暗网丢出去。。所以可以把请求都 hook ,走我们指定的代理。这里就可以用 proxychains 这个软件 (mac 上是 proxychains-ng)。考虑到需要 http 代理,然而 tor 提供的是 socks5,可以先用 polipo 或者 privoxy 转一下,方法也简单,还是本地开一个,设置好转发就可以了。
5、polipo
下载地址
选择polipo-1.1.0-win32.zip,下载并解压,然后编辑解压后的文件config.sample,在文件的开头加上以下配置

socksParentProxy = "localhost:9050"

socksProxyType = socks5

diskCacheRoot = ""

使用cmd命令进入该目录,运行程序:polipo.exe -c config.sample

启动polipo

打开edge浏览器,设置代理

手动设置代理8123

再测试一下访问暗网有没有走tor流量
二、Python 爬虫——scrapy
关键点:各端口的对应
1、 tor的网络设置,勾选代理服务器,这里设置的网络地址和端口就是你使用的shadowsocks的位置和端口,一般是本地和1080.
2、polipo的设置,使用本机地址和tor提供的socks端口(9050或9150),tor中 高级->tor控制->使用tcp控制那里的端口与这些配置无关。
3、爬虫的端口,经过polipo的转换,最后走的是http代理,所以爬虫的端口应设置为polipo的端口,默认8123
例如:HTTP_PROXY = 'http://127.0.0.1:8123'
4、scrapy项目的setting.py

DOWNLOADER_MIDDLEWARES = { 
    'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware' : None,#必需 ,禁用默认的middleware
    'tutorial.random_user_agent.RandomUserAgentMiddleware': 400, #添加user_agent_list
    'tutorial.random_user_agent.ProxyMiddleware':200,
     }

5、有些站点可能要转换为.onion.guide,不过暂时没转化,也没发现有问题。

onion转为onion.guide

6、剩下的就和普通的爬虫一样,这里就不做赘述。

linux下以centos为例,配置

第一步装shadowsocks,定义端口为1091,一般是1080.自己设置即可。
ss的安装

pip install shadowsocks

修改配置文件,其中配置文件可以自定义位置,只要启动时候打开对相应的文件路径即可,如:

vi /etc/shadowsocks.json

内容定义如下:

{
  "server":"x.x.x.x",             #你的 ss 服务器 ip
  "server_port":0,                #你的 ss 服务器端口
  "local_address": "127.0.0.1",   #本地ip
  "local_port":0,                 #本地端口
  "password":"password",          #连接 ss 密码
  "timeout":300,                  #等待超时
  "method":"aes-256-cfb",         #加密方式
  "workers": 1                    #工作线程数
}

启动ss,-c之后就是上面的配置文件的路径,在后面 -d start就是让ss后台运行,不占用shell命令行

 sslocal -c /etc/shadowsocks.json -d start

测试ss是否成功翻qiang。

curl --socks5 127.0.0.1:1985 http://httpbin.org/ip

tor的安装
root权限下

yum install tor 

或者这样安装也行

sudo apt-get install tor

其中tor的配置文件目录在:/etc/tor/torrc
内容:

DataDirectory /etc/tor/run
Socks5Proxy 127.0.0.1:1091
SocksPort 9050
ControlPort 9051

上面SocksPort为tor的端口,ControlPort为tor收到控制命令的端口,Socks5Proxy为本机地址,端口对应shadowsocks自己定义的代理端口。
启动tor

tor -f /etc/tor/torrc

privoxy的安装
下载安装文件

wget http://www.privoxy.org/sf-download-mirror/Sources/3.0.26%20%28stable%29/privoxy-3.0.26-stable-src.tar.gz
tar -zxvf privoxy-3.0.26-stable-src.tar.gz
cd privoxy-3.0.26-stable

privoxy安装

autoheader && autoconf
./configure
make && make install

privoxy配置:

vim /usr/local/etc/privoxy/config

找到下面两句话,确保没被注释,listen-address为privoxy的端口,forward-socks5t的端口号为tor设置的端口,如果不使用tor,则设置为shadowsocks的端口,如1080

listen-address 127.0.0.1:8118 # 8118
forward-socks5t   /               127.0.0.1:9050 .#这里注意端口之后还需要一个" "加一个"."

privoxy启动命令

privoxy --user privoxy /usr/local/etc/privoxy/config

测试 shadowsocks

w3m www.google.com

测试tor

w3m https://check.torproject.org/

当http请求是通过Tor,该测试页面会有这样的信息:
Congratulations. This browser is configured to use Tor.
如果没有经过Tor,则是
Sorry,you are not using Tor
小知识:通过Tor访问暗网与普通网站的区别:
暗网中并不像我们平时访问的网站通过DNS机制进行解析。暗网是通过6个Tor节点来连接用户和.onion网站的,因此隐蔽性比较强。具体规则如下:

a)暗网地址很随机性,没有规律,因此为了证明自己的存在,暗网服务器首先选择3个介绍点(Tor节点)告知它们网站的公钥。与这3个介绍点的连接并不是直连,而是通过Tor电路,所以介绍点不知道暗网服务器地址。

b)暗网服务器组装自己的描述符,描述符包括公钥、3个介绍点,接着用私钥做签名上传到一个分布式的哈希表(目录服务器)。描述符与暗网地址一一对应,暗网地址.onion通过公钥随机生成,可根据地址找到对应的描述符。

c)客户端得知了一个.onion地址,建立了Tor电路去访问目录服务器并下载对应的描述符获取公钥等信息。与此同时,客户端随机选择一个Tor节点作为“会合点”与之建立3跳的Tor电路,并告知一个一次性的会话密钥。

d)客户端组装一个介绍信息(包含会合点的IP地址和一次性密钥),用获取的该网站公钥进行加密,通过Tor电路发送此信息给一个介绍点,由介绍点转发请求到.onion网站。由于通过Tor电路发送信息,因此客户端地址匿名。

e)暗网服务收到介绍信息后用自己保留的网站私钥解密得到会合点地址和一次性密钥。并且创建一个3跳的Tor电路到会合点,携带一次性密钥。

f)会合点验证一次性密钥后通知客户端连接建立成功。然后客户端和暗网服务器就可以通过各自的Tor电路连接到会合点进而通信。客户端与暗网服务器共经过6个Tor节点。

Tor网络的域名解析机制

暗网的域名解析机制中客户端不知道服务器的真实地址,只能通过Tor网络的解析机制进行访问,要经过6个随机的不同国家或地区的节点,而且会每隔几分钟变换节点,因此很难被追踪。
参考文章:
https://program-think.blogspot.com/2013/11/tor-faq.html
http://www.cnblogs.com/nuolan/p/5729650.html
http://pcliuyang.blog.51cto.com/8343567/1546500
http://www.cnblogs.com/kylinlin/p/5242266.html
https://brickyang.github.io/2017/01/14/CentOS-7-%E5%AE%89%E8%A3%85-Shadowsocks-%E5%AE%A2%E6%88%B7%E7%AB%AF/
http://www.freebuf.com/articles/network/137928.html

相关文章


零基础如何学习python爬虫 3行Python代码完成人脸识别 Python采集微博热评进行情感分析祝你狗年脱单 用Python分析李小璐微博 拯救Python新手的几个项目实战 别让大数据成为企业杀手! Python爬虫分分获取URP教务系统学籍信息! Python装饰器的妙用详解,及时收藏,不谢!

上一篇:Kaggle泰坦尼克生存预测之随机森林学习
下一篇:如何迅速上线你的第1个网站

咨询·合作