• 隐藏侧边栏
  • 展开分类目录
  • 关注微信公众号
  • 我的GitHub
  • QQ:1753970025
Chen Jiehua

socks5 & http代理汇总 

日常工作中总有一些代码库、官方源是在国外的,要么完全访问不了,要么下载速度几kb/s。所以学会使用各种代理乃是重中之重……

首先假设我们已经通过ss部署了一个socks5代理( 127.0.0.1:1080)。

Git设置代理

在 git clone 时,有时候速度真是让人难以忍受,而通过代理可以大大提高下载速度。

设置全局代理,这里不必设置https.proxy, 文档中并没有该参数: https://git-scm.com/docs/git-config#git-config-httpproxy:

git config --global http.proxy socks5://127.0.0.1:1080

或者,只针对 https://github.com 设置代理:

git config --global http.https://github.com.proxy socks5://127.0.0.1:1080

如果使用ssh协议可能无法使用代理,因此我们将 ssh 替代为 https:

git config --global url.https://github.com/.insteadOf git://github.com/

执行完上面,可以查看 ~/.gitconfig 的配置:

[http "https://github.com"]
    proxy = socks5://127.0.0.1:1080
 
[http]
    proxy = socks5://127.0.0.1:1080
 
[url "https://github.com/"]
    insteadOf = git://github.com/

也可以取消代理:

git config --global --unset http.proxy

对于 socks5 和 socks5h 的区别:

  • socks5h: the hostname is resolved by the SOCKS server (also known as CURLPROXY_SOCKS5_HOSTNAME type);
  • socks5: the hostname is resolved locally;

Shell设置代理

如果我们在运行其它命令也需要使用代理,如果 apt、go get 等,该怎么做呢?

tsocks

安装tsocks:

sudo apt install tsocks

配置一下 tsocks 使用 socks5 代理, /etc/tsocks.conf:

# 直接连接不使用代理,192.168.0.*
local = 192.168.0.0/255.255.255.0
  
# 针对特殊地址配置
path {
    reaches = 150.0.0.0/255.255.0.0
    server = 10.1.7.25
    server_type = 5
    default_user = user
    default_pass = pass
}
 
# 默认配置
server = 127.0.0.1
server_type = 5
server_port = 1080

通过tsocks走代理:

sudo tsocks apt update

proxychains

安装 proxychains:

sudo apt install proxychains

稍微配置一下 /etc/proxychains.conf:

strict_chain
proxy_dns
tcp_read_time_out 15000
tcp_connect_time_out 8000
[ProxyList]
socks5 127.0.0.1 1080

在命令行前加上 proxychains 让程序走 socks5 代理:

sudo proxychains apt install xxx
proxychains git clone git@github.com:xxx/xxx.git

Socks转为http代理

尽管通过上面的方式,我们已经解决了大部分的代理问题。但是仍有某些特殊场景下,我们只能使用http代理。因此,我们需要将 socks5 代理转换为 http 代理。

这里我们将通过 privoxy 这个软件来实现该功能,首先安装一下:

sudo apt install privoxy

然后进行一些必要的配置 /etc/privoxy/config:

user-manual /usr/share/doc/privoxy/user-manual
confdir /etc/privoxy
logdir /var/log/privoxy
filterfile default.filter
logfile logfile
actionsfile match-all.action # Actions that are applied to all sites and maybe overruled later on.
actionsfile default.action   # Main actions file
actionsfile user.action      # User customizations
 
# 设置监听端口
listen-address  localhost:8118
toggle  1
enable-remote-toggle  0
enable-remote-http-toggle  0
enable-edit-actions 0
enforce-blocks 0
buffer-limit 4096
enable-proxy-authentication-forwarding 0
forwarded-connect-retries  0
accept-intercepted-requests 0
allow-cgi-request-crunching 0
split-large-forms 0
keep-alive-timeout 5
tolerate-pipelining 1
socket-timeout 300
 
# 限制访问权限
permit-access src_addr[:port][/src_masklen] [dst_addr[:port][/dst_masklen]]
 
# 连接socks5代理,注意最后的 . 不能漏了
# 示例: forward-socks5 target_pattern socks_proxy[:port] http_parent[:port]
forward-socks5 / 127.0.0.1:1080 .

重启一下privoxy:

sudo service privoxy restart
这时候我们已经创建了一个http代理 localhost:8118

shell使用http代理

我们可以为 shell 设置 http 代理:

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

 

码字很辛苦,转载请注明来自ChenJiehua《socks5 & http代理汇总》

评论