将Socks5转换为HTTP/HTTPS类型

Published: 2016-02-06

Tags: TCP/IP

本文总阅读量

感谢郭嘉,回家后虚拟砖用网洛多个结点全部Boom,原来个个地区的联不通还是有区别的。

万幸的是至少55还能继续战斗,然而很多工具仅仅支持HTTP/HTTPS,这就需要一些转换,把Socks5变为HTTP/HTTPS协议,这样就可以继续快乐的玩耍了

本文对具备如下条件的人可能有点用

  • Linux操作系统
  • 本机已经具备55梯子
  • 55梯子的速度优于虚拟砖用网洛

转换方法:使用polipo

主流发行版通过包管理器安装polipo

如Fedora下是使用dnf

dnf install polipo

修改配置文件/etc/polipo/config

设置如下两个参数

socksParentProxy = "localhost:1080"
socksProxyType = socks5

注:1080为你的本机已配置可以使用的55端口

设置polipo为自启动

systemctl enable polipo

关闭SELinux,这个东西个人电脑我觉得是没有必要开启,开启还会拦截polipo的行为,懒得配置,索性关闭,修改/etc/selinux/config文件的属性为disabled。SELINUX=disabled

重新启动系统,8123端口就静静的等待请求了~

可以使用/usr/sbin/getenforce获取状态,查看是否成功关闭了SELinux,也可以使用systemctl status polipo查看启动状态,如果启动出错,可以查看日志,获取运行信息/var/log/polipo/polipo.log

应用场景

场景一:使用wget/curl下载文件等

比如下载Dropbox客户端,如下是下载64位的Dropbox的命令

cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -

wget不支持socks5,可以这样使用刚刚转换完成的http/https通道

https_proxy=http://localhost:8123 wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -

注意前边加的https_proxy,当需要加速的是http连接的时候,需要使用http_proxy=http://localhost:8123

当然这么使用wget有些土,可以指定wget的设置,命令如下,同样的,根据URL的设置http或是https

wget -O filename -e use_proxy=on -e https_proxy=127.0.0.1:8123 "http://www.a.com/filename.zip"

场景二:使用Youtube-dl下载油管视频

youtube-dl是我目前发现的最舒服的下载油管视频的方式,在VPS上还好,分分钟几M/s的速度,但是拖回来不容易,所以决定直接使用ss下载,然而这货是不支持socks5的,于是,可以这么用

https_proxy=http://localhost:8123 youtube-dl https://www.youtube.com/watch?v=AJLQr-uxsoQ

没错,需要同时设置http和https,不过有更优雅的方式

youtube-dl --proxy 127.0.0.1:8123 https://www.youtube.com/watch?v=AJLQr-uxsoQ

场景三:使用SSH登陆服务器

最心累的事情莫过于百八十年不用的VPS突然想上去弄点东西发现被Q的连ssh都不通...虚拟砖用网洛稳定性实在是一个地方一个样,连接上一会又断了,所以使用55也是情非得已

https_proxy=http://localhost:8123 ssh root@123.123.123.123

ssh设置http或者https都是可以工作的

场景四:操作Github相关如下载和推送

git config --global http.proxy 127.0.0.1:8123
git clone https://github.com/xxx/xxx.git
git xxx
git xxx
git config --global --unset-all http.proxy

应用场景还有很多,随时补充。

参考: