使用Privoxy将http代理转换成socks5代理

  1. 一、缘由
  2. 二、思路
  3. 三、解决办法
    1. 1、实验环境
    2. 2、安装privoxy
    3. 3、修改配置
    4. 4、启动privoxy服务
    5. 5、设置http和https的全局代理
    6. 6、测试

一、缘由

在工作电脑上(Win10系统)安装了SSR客户端,实现了浏览器的科学上网。但是呢,使用命令行(无论是cmd还是Shell)从github上拉取代码、拉取Docker镜像,依然很慢,有时候还会连接超时,被墙,很是苦恼。

最典型的场景,在使用kubeadm工具安装k8s的时候,拉取的都是google的镜像,由于被墙,压根访问不通。你当然可以指定使用阿里云镜像库,但是其他插件的安装,比如存储插件rook、网络插件weave,还是要访问被墙的镜像库,就会下载不到 ,很烦。

最一劳永逸的办法就是,搞通网络,让Shell终端或者Docker pull可以使用sockts5代理访问被墙的资源。

二、思路

  • 我工作电脑本地存在SSR客户端,可以翻墙,使用的是socks5协议。

  • 一般cmd、shell、docker pull、git clone等命使用的都是http协议,可以配置http代理。

  • 故考虑将http代理转换成socks5代理,这样命令行就能翻墙了。

具体流程图如下:

graph LR
    Cmd -->|http代理| Privoxy --> |Socks5代理|SSR客户端 --> SSR服务端

三、解决办法

1、实验环境

Ubuntu16.04 + Privoxy 3.0.24 + Win10 SSR客户端

2、安装privoxy

sudo apt-get install privoxy

3、修改配置

打开配置文件vim /etc/privoxy/config,修改如下两处:

# 如果想让其他主机使用这个代理转换,可以监听0.0.0.0
listen-address  127.0.0.1:8118
# 这里填写局域网内SSR客户端的IP和端口,端口默认1080。
# 如果SSR客户端是在本地就写127.0.0.1:1080
forward-socks5   /               192.168.101.79:1080 .

4、启动privoxy服务

sudo  service  privoxy start

5、设置http和https的全局代理

export http_proxy='http://127.0.0.1:8118'
export https_proxy='http://127.0.0.1:8118'

注意:不建议将这个代理的环境变量写入profile文件,只建议在需要的时候在当前shell窗口写入这个变量即可。

6、测试

使用wget或者curl命令访google.com,返回正常页面内容即成功。

wget www.google.com 
curl www.google.com

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 lxwno.1@163.com

×

喜欢就点赞,疼爱就打赏