在终端下间接使用Socks5代理的几种方法(privoxy,tsocks,proxychains)

不知道为什么今天PPA又只能使用代理访问了。好像终端不支持Socks5代理 没办法。咱转换吧。
(以下方法合用几乎可以使linux下面大多数软件实现代理通信,即使软件本身不支持)

1.使用tsocks转接

[bash]sudo apt-get install privoxy
vim /etc/tsocks.conf[/bash]

简单介绍下配置方法

[bash]local = 192.168.0.0/255.255.255.0
local = 10.0.0.0/255.0.0.0
local = 127.0.0.1/255.255.255.255
#本地子网不使用代理
#这里的本地子网不一定是局域网,凡是本机可以直接连接的IP都属于local的范围。
#放大了讲,国内的IP基本上对tsocks来说都是一个“本地子网”(伟大的局域网)

path {
reaches = 150.0.0.0/255.255.0.0
reaches = 150.1.0.0:80/255.255.0.0
server = 10.1.7.25
server_type = 5
default_user = delius
default_pass = hello
}
#例外网站。这里列出来的网站不通过默认服务器走,而是通过特定的服务器走。server_type规定了这是一个socks5代理服务器

# 默认服务器(不是本地子网的,也不是例外网站)
server = 192.168.0.1
# Server type defaults to 4 so we need to specify it as 5 for this one
server_type = 5
# The port defaults to 1080 but I've stated it here for clarity
#默认端口1080
server_port = 1080
[/bash]

我们可以这样测试一下

[bash] tsocks wget https://www.dropbox.com -v -O /dev/null
--2011-01-09 21:28:52-- https://www.dropbox.com/
正在解析主机 www.dropbox.com... 208.43.202.50
Connecting to www.dropbox.com|208.43.202.50|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:未指定 [text/html]
Saving to: `/dev/null'
#略............
#直接wget,就会撞墙
wget https://www.dropbox.com -v -O /dev/null
--2011-01-09 21:29:15-- https://www.dropbox.com/
正在解析主机 www.dropbox.com... 208.43.202.50
Connecting to www.dropbox.com|208.43.202.50|:443...
#查看代理IP
tsocks wget http://202.12.29.205/templates/yourip.html -o /dev/null -O /tmp/yourip.html && cat /tmp/yourip.html |grep '\['
#略......
[/bash]

效果那是立竿见影啊!遗憾的是似乎已经停止开发了,而且ssh和ftp不工作,其官方网站你推荐了另外一个替代品,Dante,这个配置有点复杂,后面我会给出一个更好的替代品。

2.使用privoxy转换Socks5->HTTP代理

[bash]sudo apt-get install privoxy
vim /etc/privoxy/config[/bash]

在最后一行加入

[bash]forward-socks4 / 127.0.0.1:1080 . # socks v4
forward-socks4a / 127.0.0.1:1080 . # socks v4, use remote dns
forward-socks5 / 127.0.0.1:1080 . # socks v5[/bash]

注意后面有个点
1080是本机的Socks代理端口
然后用service把privoxy给restart一下即可
默认监听的端口是本机的8118
如果要监听所有端口或者更换所有端口

[bash]listen-address 127.0.0.1:8118[/bash]

改为

[bash]listen-address :8118[/bash]

即可
这个虽然有点杀鸡用牛刀的意思,而且privoxy的鉴权不好实现。但是还是个好方法。

3.使用proxychains完美替代

[bash]apt-get install proxychains
vim /etc/proxychains.conf[/bash]

配置非常简单,软件有3种代理模式

# Dynamic - Each connection will be done via chained proxies
# all proxies chained in the order as they appear in the list
# at least one proxy must be online to play in chain
# (dead proxies are skipped)
# otherwise EINTR is returned to the app
动态模式
按照列表内指定的代理的顺序执行代理操作,遇到不可用代理时会自动切换
至少需要一个可用代理

# Strict - Each connection will be done via chained proxies
# all proxies chained in the order as they appear in the list
# all proxies must be online to play in chain
# otherwise EINTR is returned to the app
严格模式
代理顺序严格按照列表顺序来,列表内代理必须全部处于可用状态
# Random - Each connection will be done via random proxy
# (or proxy chain, see chain_len) from the list
# this option is good for scans
随机模式
随机选择代理代理列表里面的代理,代理个数由chain_len决定(如果你的代理个数少于chain_len个数,会报错)

[ProxyList]配置节指定了代理列表。支持socks4/5 http等
还支持带认证的代理
比如

type host port [user pass]
socks5 192.168.67.78 1080 lamer secret

贴一下我的配置文件

[bash]#cat /etc/proxychains.conf |grep -v "#" |sed /^$/d
dynamic_chain
chain_len = 1
tcp_read_time_out 15000
tcp_connect_time_out 10000
[ProxyList]
socks5 127.0.0.1 1080
socks4 127.0.0.1 1080[/bash]

使用方法和tsocks是一样的,比如
[bash]proxychains wget https://www.dropbox.com -v -O /dev/null[/bash]


遗憾的是,以上几款都不支持基于用户名和密码的鉴权!
本机用用可以,想要小圈子内共享是个大问题!


更加专业工具

如果你有一VPN线路出国,想要和朋友共享这条加密隧道,但是又不方便把VPN共享,或者不想使用chnroutes这样和autoproxy相比不精确的方法,怎么办呢,下次我撰文写如何把VPN隧道转换成代理。请关注。

Author Info :
  • From:在终端下间接使用Socks5代理的几种方法(privoxy,tsocks,proxychains)
  • URL:https://blog.ihipop.com/2011/01/1988.html
  • Please Reserve This Link,Thanks!
  • 《在终端下间接使用Socks5代理的几种方法(privoxy,tsocks,proxychains)》上有9条评论

    1. 旧版的 privoxy 不支持 socks5 。后来源码安装了一个最新版才行。

      我现在的情况是 : shadowsocks 提供 socks5 代理, privoxy 把 socks5 转化为 http 代理。这样,那些只支持 http 带来的应用就可以用了。

      另外, 不同的应用对 tsocks 支持也不一样。比如, curl 就不能使用 tsocks ,而 wget 就行。

    发表回复

    您的电子邮箱地址不会被公开。 必填项已用 * 标注