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()

3.5.3. 测试效果图

在这里插入图片描述


感谢以下大神的肩膀:

一周一技 | 如何快速拥有 600 + 个代理 IP?

如何在linux环境下搭建Tor代理服务器

Tor 和 Shadowsocks 双重高度匿名代理

发布了18 篇原创文章 ·
获赞 1 ·
访问量 12万+