Centos7配置Polipo+Tor实现HTTP代理

写在前面

最近在做一些神秘项目,需要用到http->socks5的代理访问模式,网上一大堆配置说明要么驴头不对马嘴,要么讲半天事情都没讲清楚,要么就是复制粘贴,故写此文章。

配置Tor

centos上配置Tor可谓是非常简单了,直接通过yum进行安装即可,安装之前要注意的是,Tor不再建议将其仓库用于CentoOS,而建议使用epel仓库,所以首先要安装epel仓库,然后安装Tor即可(以下命令不做特殊声明均使用root权限)

yum install epel-release
yum install tor

安装之后需要对Tor的配置文件进行修改,所以

vim /etc/tor/torrc

打开之后我们要改的地方只有一个位置,找到下面的这一行,打开注释即可,Linux上Tor默认是9050端口,如果有需要可以自行更改端口

SOCKSPort 9050

之后就可以开启Tor服务了

service tor restart
systemctl restart tor

之后我们可以测试是否配置成功(不需root权限)

curl --socks5-hostname localhost:9050 https://check.torproject.org

如果shell返回下图,就是成功配置了
在这里插入图片描述

可能会遇到的问题

在配置Tor之后,虽然测试check.torproject.org成功了,但是如果使用curl多测试一些神秘网站的时候会发现这样的错误:Can’t complete SOCKS5 connection to 0.0.0.0:0.
在这里插入图片描述
这个问题我研究了很久,并且尝试了很多种方式来定位问题,最后发现是有两种可能的:

  • 如果使用http访问的时候是504错误,那么就是远程的服务器没有打开,这种情况只能等待对方网站服务器开启之后再访问
  • 因为我们是用了curl-hostname参数,DNS的解析是在远程的Tor那里的,可能是Tor那里DNS解析错误,那么这种时候问题就处在Tor的版本上,使用yum list installed指令来查看安装包的版本,我们只需要关心三个安装包的版本:epel仓库、tortorsocks
    在这里插入图片描述
    因为有些时候使用yum安装软件的话并不一定是比较新的版本,这就有可能导致错误,我两台服务器上面的epel仓库都是7-11版本,但是使用他们安装的Tor的版本一个是0.3.5另外一个是0.2.9,Tor的依赖包torsocks的版本也是一个新一个旧,这就导致两台服务器一个就能正常解析DNS,而另一个就会报出来如上的错误,所以需要手动更新Tor至最新的版本
    在这里插入图片描述
    目前使用0.3.5的Tor是可以正常解析DNS的,更新版本后问题解决,如果碰巧你的仓库也不能安装较新版本的Tor的话,可以点这里进行离线安装。提取码: b7bk

配置Polipo

Polipo的配置要复杂一些,网上的教程鱼龙混杂,看得我头大,于是我慢慢摸索出来了一条比较好走的路
首先打开这个网址:下载地址
在这里插入图片描述
选中上图画圈的文件下载下来,当然也可以直接使用wget (不需root权限)

wget https://copr-be.cloud.fedoraproject.org/results/jasonbrooks/polipo/epel-7-x86_64/polipo-1.1.1-2.fc22/polipo-1.1.1-2.el7.centos.x86_64.rpm

之后使用yum进行安装

扫描二维码关注公众号,回复: 15694531 查看本文章
yum install polipo-1.1.1-2.el7.centos.x86_64.rpm

网上几乎所有的教程都是从github下载源码自己编译配置,make半天,整一大堆config文件,一个人一个写法还不知道为什么,直接走安装包他不香么?
之后我们可以进入Polipo默认的配置文件所在地

vim /etc/polipo/config

里面又一大堆注释
在这里插入图片描述
不要慌,我们只需要找到下面这几行打开注释即可

socksParentProxy = "localhost:9050"  # 因为我们要与Tor一起使用
socksProxyType = socks5  # 这里Polipo提供了把他接管的http送到socks5的方法
diskCacheRoot = ""  # 这一行跟上两行不挨在一起,往下面找找,如果不需要Tor,仅仅用Polipo的话,这三行可以不用打开
chunkHighMark = 50331648  # 这两行是控制使用的内存大小,打开即可
objectHighMark = 16384

之后就保存并退出吧!与开启Tor一样的方式开启Polipo即可

systemctl start polipo

Polipo默认代理在8123端口,可以自行更改,经过上面的操作后,我们可以看看是否完成了配置,可以使用nmap工具

nmap localhost -p 8123

在这里插入图片描述
可以看到端口已经被打开了,并且是Polipo在用,现在我们可以看一下8123端口是否代理的是我们的http请求呢?我们用它访问网站ifconfig.me(不需要root权限)

curl --proxy localhost:8123 ifconfig.me

可以看到这个网站返回给了我们当前的IP地址
在这里插入图片描述
这个IP地址不是我们当前的IP地址,一方面证明我们的Tor开启成功,与Polipo对接上,另一方面证明我们8123端口成功代理http请求,大功告成!
如果需要关闭这两个代理,则

systemctl stop polipo
systemctl stop tor

如果不想记住这些命令可以写一个脚本把命令装在里面,一键启动和关闭

猜你喜欢

转载自blog.csdn.net/qq_41983842/article/details/108059574