Total Pageviews

Thursday 26 July 2018

利用python-proxy翻墙

登陆linux vps.
git clone https://github.com/LuoZijun/python-proxy python-proxy-by-LuoZijun
cd python-proxy-by-LuoZijun

root@umh:~/python-proxy-by-LuoZijun# ls
LICENSE  README.rst  assets  document  proxy
root@umh:~/python-proxy#
root@umh:~/python-proxy# ls proxy
__init__.py  __init__.pyc  __main__.py    protocols  utils
root@umh:~/python-proxy# grep -ri 1070 .
 会显示:
./proxy/__init__.py:    def __init__(self, host="0.0.0.0", port=1070):
./proxy/__init__.py:    port  = 1070
./proxy/__main__.py:    port  = 1070
./README.rst:然后在你的浏览器当中的网络设置里,填上 代理地址: `127.0.0.1` ,端口: `1070` 。
./README.rst:        port  = 1070
root@umh:~/python-proxy# cd proxy
root@umh:~/python-proxy/proxy#  nano __init__.py
(把 __init__.py文件里的2处1070改为其他端口,比如3089)
root@umh:~/python-proxy/proxy# nano __main__.py
(把 __main__.py文件里的1处1070改为其他端口,比如3089)
root@umh:~/python-proxy/proxy# cd ..
root@umh:~/python-proxy# python -m proxy
(此命令里的proxy指当前目录下的子目录proxy)
会显示:
2018-07-26 15:54:41 [Server] Proxy Server running on 0.0.0.0:3089 ...

不过命令:python -m proxy是运行在前台的,容易退出,我们可以利用systemd来把该命令运行为
service:
nano  /etc/systemd/system/python-proxy.service
内容为:
[Unit]
After=network.target

[Service]
WorkingDirectory=/root/python-proxy/
ExecStart=/usr/local/python-2.7.8/bin/python -m
/root/python-proxy/proxy/
Restart=always

[Install]
WantedBy=multi-user.target


然后运行:
systemctl start python-proxy
systemctl enable  python-proxy
服务器端就搭建好了。
我这里在vps里,重新编译了python-2.7.8,把系统原有的/usr/bin/python重命名为/usr/bin/python-old了。

验证一下:
root@umh:~/python-proxy/proxy# lsof -i:3089
COMMAND   PID USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
python  19145 root    3u  IPv4 134081510      0t0  TCP *:3089 (LISTEN)
root@umh:~/python-proxy/proxy#
说明监听3089端口的python进程在运行中。

在本地机器上。以firefox为例。
设置ff的socks5代理服务器地址为vps-ip:3089 ,还要设置ff的dns解析为远程dns解析:
DNS查询的时候记录的仍然是你本身所在的网络,并没有做到完全的保密。这种情况也是有解决方案的。
打开Firefox浏览器,地址栏中输入about:config进入浏览器的内部设置,在使用该配置的时候要非常的谨慎,配置不当可能会使浏览器无法正常使用。在弹出的告警对话框中点击”我了解此风险!”进入下一个页面。
在顶部的搜索栏中输入”network.proxy.socks_remote_dns”,然后双击该配置项,配置就发生了变化,状态由默认变成了已修改,值由false(默认值)变成了true。配置生效后,Firefox就会使用代理转发DNS请求而不是在本地解析。
这样,ff即可翻墙。遗憾的是打不开www.youtube.com

注:利用chrome+switchyomega还是可以打开www.youtube.com的。
所以chrome+switchyomega其实比ff更好用,更能抗‘dns污染’。

项目地址: https://github.com/LuoZijun/python-proxy

这个python-proxy反应较慢,建议使用其他的socks代理服务器程序翻墙。
-----------------------------

不建议如上那样直接用python-proxy翻墙,因为socks proxy仍然是明文传输,不安全。

No comments:

Post a Comment