有时候需要连接某机器,但是直接连被屏蔽了,虽然可以用代理来搞定一些应用程序,但是很多程序不支持代理,或者只支持某些类型的代理,这时候就可以试一试 proxychains 这个软件了。

最近用各种脚本下载东西的时候发现有的站点需要当地IP才能下,比如…..nico, youtube等;所以就找了下能在终端用socks5代理的工具,最后找到了proxychains,配合shadowsocks,从此再无压力=w=

比如:svn 只支持 HTTP 代理,不支持 socks4 代理,svn+ssh 方式也挺麻烦的。如果只有 socks 代理,就不能直接使用,可以用一个 socks 转 HTTP 代理软件的,但是需要在 ~/.subversion/servers 里配置。此时用 proxychains 这个东西就更方便。

proxychains 用起来就像 time, strace, ccache 等命令那样,直接作为其他命令的前缀来使用。程序在代理的环境下被加载运行,本身不需要支持代理。

使用 proxychains 当然要先有代理,如果你有一台能 ssh 上去的 unix 主机,就可以用它来做代理:

ssh -D 连到nen能访问目标网络的机器,就能开个 socks4 动态转发代理。具体命令:

$ ssh -Nf username@hostname -D 61000
解释:
-N 不执行命令
-f 跑到后台执行
-D 61000 监听 localhost:61000 端口,把一切请求转发给被连的服务器

只要这个 ssh 进程不被 kill,机器不被重启,这个代理就有效。

下面 proxychains的安装和使用

proxychains 的安装配置使用过程如下:

配置编译安装,i修改该配置文件 /etc/proxychains.conf,找到这一段:

默认的socks4 127.0.0.1 9095是tor代理,而socks5 127.0.0.1 1080是shadowsocks的代理。

102 #       socks5  192.168.67.78   1080    lamer   secret
103 # http 192.168.89.3 8080 justu hidden
104 # socks4 192.168.1.49 1080
105 # http 192.168.39.93 8080

[ProxyList]
# add proxy here ...
# meanwile
# defaults set to "tor"
socks4  127.0.0.1 61000

这个 61000 就是刚才 ssh -D 的那个端口参数 。

不要 DNS 代理,所以去掉了

# Proxy DNS requests - no leak for DNS data
# proxy_dns

安装配置好,输入

$ proxychains svn co https://.....
object 'libproxychains.so' from LD_PRELOAD cannot be preloaded: ignored

有问题,仔细想才发现机器是 x86_64,svn 装的却是 32 位的,库又被编译成 64 位的,自然加载不了。

于是编译了一个32 位的放上去,好了。

然后设置一下 alias,就更省事了:
alias svn='proxychains svn'

proxychains 原理很简单,用环境变量 LD_PRELOAD 来 hook 库函数,主要是 connect
函数。另外也 hook 了dns 相关的以下函数,用来做 dns 代理,我用不到也就不关心了。

proxychains 的可执行文件是个脚本,内容很简单,就是设置一下 LD_PRELOAD 再去 exec $@,开头有一行 logo 输出,可以去掉。

对于非 root,so 可以安装在用户目录下,proxychains 脚本也可以装在 ~/bin 下,修改一下内容,加载正确的 so 即可

proxychains 支持配置文件,文件名为 proxychains,搜索依次顺序为 ., ~, /etc,具体选项可以看其范例

最新文章

  1. 在Linux/Windows系统上编辑/etc/hosts文件
  2. Windows下安装Nginx反向代理服务器
  3. .net变量判断
  4. Codeforces Round #335 (Div. 2) B. Testing Robots 水题
  5. 使用【百度云推送】第三方SDK实现推送功能具体解释
  6. android学习5——画图问题
  7. 演示 Calendar 的一般操作
  8. 解决IE下CSS因 Mime 类型不匹配而被忽略的问题
  9. 分布式架构设计(一) --- 面向服务的体系架构 SOA
  10. LeetCode之“字符串”:Restore IP Addresses
  11. Java数据结构和算法 - 链表
  12. javascript没有长整型
  13. zabbix 官方文档
  14. 用ChrootDirectory限制SFTP登录的用户只能访问指定目录且不能进行ssh登录
  15. Mint UI 之 Swipe 组件
  16. python核心编程笔记——Chapter6
  17. Substring with Concatenation of All Words 题解
  18. r语言,安装外部包 警告: 无法将临时安装
  19. iOS 禁止多按钮同时响应
  20. hdu 2025:查找最大元素(水题,顺序查找)

热门文章

  1. ios开发之--新手引导页图片适配方案
  2. 解决select2在modal中无法输入的问题
  3. Kafka与Flink集成
  4. 【delphi】delphi的TAdoQuery读取Excel数据
  5. win10找回Windows照片查看器
  6. <转>Python: __init__.py 用法
  7. 【cs229-Lecture2】Linear Regression with One Variable (Week 1)(含测试数据和源码)
  8. USACO The Clocks
  9. Python在mysql中进行操作是十分容易和简洁的
  10. m个苹果放入n个篮子