Categories: 业界

命令行代理神器Proxychains详解

Proxychains是一个强大的开源工具,广泛应用于Linux和其他Unix环境下。其主要功能是使任何程序通过代理上网,允许TCP和DNS通过代理隧道,支持HTTP、SOCKS4和SOCKS5类型的代理服务器,并且可配置多个代理。Proxychains通过一个用户定义的代理列表强制连接指定的应用程序,直接断开接收方和发送方的连接。这意味着,当你需要访问一些受到网络限制或者你希望隐藏你的网络行为时,你可以使用Proxychains来实现这些需求。

官方地址:https://github.com/rofl0r/proxychains-ng

http_proxy和https_proxy

在Linux中,http_proxyhttps_proxy这两个环境变量被许多命令行程序用于确定网络请求的代理设置。这两个环境变量通常用大写或小写来表示,如HTTP_PROXYHTTPS_PROXY

当你在终端中设置这些环境变量后,许多常用的命令行工具,比如curl、wget、git等,都会使用这些环境变量中定义的代理服务器进行网络通信。这可以让你在需要通过代理访问网络的情况下,方便地进行各种操作。

你可以使用以下命令来设置这些环境变量:

export http_proxy=http://172.16.0.227:18118
export https_proxy=http://172.16.0.227:18118

在这里,proxyserver是你的代理服务器的地址,port是代理服务器的端口。如果你的代理服务器需要用户名和密码,你可以使用以下格式:

export http_proxy=http://username:password@proxyserver:port
export https_proxy=https://username:password@proxyserver:port

在设置了这些环境变量后,你就可以在命令行中使用代理进行网络访问了。

需要注意的是,这些设置只对当前的终端会话有效。如果你想让这些设置在每次打开新的终端时都生效,你可以把上述的export命令添加到你的shell的配置文件中(比如~/.bashrc~/.bash_profile)。Linux .bashrc 和 .bash_profile参考这篇文章

另外,虽然许多命令行工具都会使用这些环境变量,但并不是所有的工具都会使用。有些工具可能需要进行特殊的配置才能使用代理。因此,如果你在使用某个工具时发现代理没有生效,你可能需要查阅该工具的文档,看看如何设置代理。

安装Proxychains

在大多数Linux发行版中,都可以通过包管理器很方便地安装Proxychains。例如,在基于Debian的Ubuntu系统中,可以使用以下命令进行安装:

sudo apt-get install proxychains

也可以从这里下载源代码,编译后安装:

git clone https://github.com/rofl0r/proxychains-ng
cd proxychains-ng
./configure
sudo make && make install

配置Proxychains

在安装完Proxychains后,你需要对其进行配置以满足你的需求。Proxychains的配置文件一般位于/etc/proxychains.conf。在这个文件中,可以配置代理服务器的类型、地址、端口,以及代理链的使用策略等信息。

配置文件的格式非常简单,一般来说,只需要修改[ProxyList]部分,添加你的代理服务器的信息即可。例如,如果你需要配置一个SOCKS5类型的代理,地址为127.0.0.1,端口为8888,可以在[ProxyList]下添加如下行:

socks5  127.0.0.1 8888

使用Proxychains

使用Proxychains非常简单,只需要在命令行前面加上proxychains4即可。例如,如果你需要通过代理访问一个网站,可以使用如下命令:

proxychains4 curl http://www.example.com

这条命令将使curl命令通过你在配置文件中设置的代理服务器访问www.example.com。你也可以用类似的方式使其他命令通过代理运行,例如wget、ssh等。

在Ubuntu上更新软件包:

sudo proxychains4 apt-get update

安装npm依赖:

proxychains4 npm install

使用docker:

proxychains4 docker run helloworld

5. Proxychains的常见问题和解决方案

尽管Proxychains非常强大,但在使用过程中,可能会遇到一些问题。在这部分,我们将介绍一些常见问题以及解决方案。

DNS泄露

默认情况下,Proxychains可能会将DNS请求直接发送到本地的DNS服务器,而不是通过代理,这可能会导致DNS泄露。为了避免这个问题,可以在Proxychains的配置文件中开启proxy_dns选项。这将使所有的DNS请求都通过代理服务器发送,从而避免DNS泄露。

连接失败

如果遇到连接失败的问题,首先检查代理服务器的信息是否正确,然后检查网络连接是否正常。如果问题仍然存在,可以尝试更换代理服务器,或者更改代理链的策略。有时候,可能是由于代理服务器的问题或者网络问题导致连接失败,这时候更换代理服务器或者检查网络连接可能会解决问题。

Proxychains不支持ICMP

需要注意的是,Proxychains只会代理TCP连接,而不支持ICMP。因此,像ping这样的命令是不能通过Proxychains代理的。

Proxychains是一个非常强大的工具,可以帮助我们在Linux命令行中方便地使用代理。它的灵活性和强大的功能使得它在网络安全和开发中有广泛的应用。虽然在使用过程中可能会遇到一些问题,但只要正确地配置和使用,就可以充分利用Proxychains的强大功能。

4.9
11
如何使用爬虫实现一个今日热榜?
提升WordPress站点性能的终极策略!
嘻嘻

嘻嘻IT: 笔者是一个工作七八年的程序猿老鸟,从事涉及的技术栈主要包括PHP、Linux、Devops等,喜欢研究新技术,尝试新技术,提升技术自动化和开发效率,致力于write less,do more! 技术每年都会层出不穷,领域划分的越来越细,不可能学习所有的东西,保持对技术的好奇心,理解技术中核心思想,做一个有深度,有思想的开发!

Recent Posts

zshrc文件详解

Zsh 是一个强大的 shel…

7小时 ago

IPKings一款优秀的HTTP/Socks5代理服务-最低1.49$每月

IPKings是一家提供可靠、…

9小时 ago

SSH频繁掉线如何解决?

SSH持久连接非常有用,因为它…

9小时 ago

都说PHP是最差的编程语言,为什么还有这么多公司在使用?

PHP是一门被广大开发者熟知的…

22小时 ago

2024 Google I/O大会放出AI大招 – 招招要友商的”命”

在谷歌年度开发者大会I/O的尾…

2天 ago