centos7安装tor服务端后提供代理ip给python调用实验
目录
实验验证时间:2019-11-17
实验目的:用tor获得免费代理ip
实验环境:VMware,centos7,python3
1. 安装tor服务端
yum install epel-release
yum install tor
2. 安装及运行ss服务
2.1. 安装编译器、依赖和运行库
yum groupinstall "development tools" && sudo yum install gcc autoconf libtool automake make zlib-devel pcre-devel openssl-devel asciidoc xmlto
2.2. 安装git,如果已安装跳过
yum install git
2.3. 克隆下载源代码
ps: 以下命令将在用户文件夹文件夹中下载并安装客户端,如果您有需要,请自行替换安装与配置路径。
git clone https://github.com/shadowsocksr-backup/shadowsocksr-libev.git ~/socketpro/client
2.4. 编译并安装
2.4.1. 进入之前下载的源代码目录
cd ~/socketpro/client
2.4.2. 配置并执行编译
ps: 根据设备硬件条件的不同,此过程可能需要5-10分钟,假如知道是4核,make可以加参数 -j4,即 make -j4,加快编译速度
./configure && make
2.4.3. 安装
make install
2.4.4. 验证是否安装成功
ss-local -h
假如不报错就表示成功了。
2.4.5. 后台运行和开机启动
2.4.5.1. 创建系统级服务文件
在/usr/lib/systemd/system下新建一个.service文件,ss.service
内容如下:
[Unit]
Description=shadowsocks manager # 服务的描述
After=network.target # 该服务跟在哪个服务后启动
[Service]
Type=forking # 启动时的进程行为,forking是以fork形式从父进程创建子进程,子进程创建后父进程退出
ExecStart=/home/scoful/startSS.sh # 启动服务时执行的命令
PrivateTmp=true # 使用私有临时文件目录
[Install]
WantedBy=multi-user.target # 附挂在multi-user.target下
ExecStart的脚本文件目录可自定义路径,其他一样就ok
2.4.5.2. 创建服务运行脚本文件
内容如下:
#!/bin/sh
nohup ss-local -v -c /home/scoful/PHK6.json &
文件头一定要写明白,不然系统不知道是什么版本的命令
/home/scoful/PHK6.json,自定义,ss的配置文件格式,这个就自寻了。
2.4.5.3. 运行及配置开机自启
# 运行前先更新一下systemctl,只要改动了service文件都要
systemctl daemon-reload
# 运行
systemctl start ss
# 看状态
systemctl status ss
# 看是否配置开机自启
systemctl is-enabled ss
# 配置开机自启
systemctl enable ss
假如start报错就status看报错信息,然后网上查询解决方案。
2.4.6. 验证ss服务是否可用
curl -I -x socks5://127.0.0.1:1080 www.google.com
返回http 200就是ok
3. 运行tor服务
3.1. 生成tor密码
tor --hash-password mypassword
这里会生成一串以 16 开头的 hash 串。
3.2. 配置ss中转和其他配置
ps: tor服务是直连block区的,需要配置一下ss中转一下才能运行
# 修改配置
vi /etc/tor/torrc
# 修改或新增以下配置
Socks5Proxy 127.0.0.1:1080 #通过 ss 代理连接
ExcludeNodes {cn},{hk},{mo},{kp},{ir},{sy},{pk},{cu},{vn} #屏蔽某些节点
strictnodes 1 # 严格节点模式
ControlPort 9051 # 指定端口
HashedControlPassword [密码] # 填入上一步获得的密码
MaxCircuitDirtiness 10 # 设置更换ip的频率
SOCKSPort 9050 # Default: Bind to localhost:9050 for local connections.
SOCKSPort 0.0.0.0:9150 # Bind to this address:port too.
# 运行
systemctl start tor
# 查看日志,是否100%done,表示成功
journalctl -f -o cat -u tor
3.3. 检查端口是否都开启
netstat -lnt
能找到 127.0.0.1:9050、127.0.0.1:9051、0.0.0.0:9150 这3个端口就ok
3.4. 直接关闭防火墙
systemctl stop firewalld.service
ps:为了方便本地python3调用虚拟机的tor服务,很不安全,本文是实验用才这样做
3.5. 本地python3调用虚拟机tor服务
3.5.1. 安装需要的依赖
pip3 install pysocks
pip3 install requests
3.5.2. 测试脚本
import requests
import time
import socket
import socks
def getip_requests():
print("(+) Sending request with plain requests...")
url = 'https://api.ipify.org?format=json'
r = requests.get(url)
print("(+) IP is: " + r.text.replace("\n", ""))
def main():
print("Running tests...")
socks.set_default_proxy(socks.SOCKS5, "192.168.232.123", 9150)
socket.socket = socks.socksocket
while True:
getip_requests()
time.sleep(10);
if __name__ == '__main__':
main()