proxychains-ng

rofl0rGPL-2.0活跃维护

通过预加载动态链接程序的 socket 调用,把任意程序的网络流量强制走 SOCKS/HTTP 代理,无需改代码就能让不支持代理的软件翻墙或内网穿透。

proxychains ng (new generation) - a preloader which hooks calls to sockets in dynamically linked programs and redirects it through one or more socks/http proxies. continuation of the unmaintained proxychains project. the sf.net page is currently not updated, use releases from github release page instead.

v4.17发布于 2024-01-21 17:38 UTC10,702star +3 / 7 天1,115fork同步于 2026-11-10 05:29 UTC

怎么上手

README 里没有找到可直接复制的安装命令

README 里没有找到可直接复制的安装命令,请到 README 或官方文档查看安装方式。

硬件要求按 README 关键词推断
支持 Apple Silicon
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

这个项目的说明还在生成中,先参考下面「最近发版」和 README。

最近发版

5 个版本v4.17
  1. v4.17Release 4.17最新正式版2024-01-21 · 2024-01-21 17:38 UTC
    • add hook for close_range function, fixing newer versions of openssh
    • fat-binary-m1 option for mac
    • fix DNS error handling in proxy_dns_old
    • simplify init code
    • fix openbsd preloading
    • fix double-close in multithreaded apps
    • various improvements to configure script

    http://ftp.barfooze.de/pub/sabotage/tarballs/proxychains-ng-4.17.tar.xz

    sha512sum proxychains-ng-4.17.tar.xz 
    aa35ae27305065a7f296cbf99b3308b2ac759287761a5d234ddaa558292467fae88c33a3ced1d71329cf6a7e8f56aa4e2ffd4274d57d87857f13ca8393d5d983  proxychains-ng-4.17.tar.xz
    
  2. v4.16Release 4.162022-01-23 · 2022-01-23 14:20 UTC
    查看更新说明
    • fix regression in configure script linker flag detection
    • remove 10 year old workaround for wrong glibc getnameinfo signature
    • support for new DYLD hooking method for OSX Monterey
    • netbsd compilation fix
    • support IPv6 localnets
    • more user-friendly error message when execvp fails
    • proxy_getaddrinfo(): fill in ai_socktype if requested

    http://ftp.barfooze.de/pub/sabotage/tarballs/proxychains-ng-4.16.tar.xz

    sha512sum proxychains-ng-4.16.tar.xz 
    c4402599043887b1481a46cec8d3ca5fcd2612b46b73a4d4ce025318640cd61b37181ad70236303933103006b313882dc57dc8838172863090f9ce33e9463a8d  proxychains-ng-4.16.tar.xz
    
  3. v4.15Release 4.152021-07-24 · 2021-07-24 05:21 UTC
    查看更新说明

    http://ftp.barfooze.de/pub/sabotage/tarballs/proxychains-ng-4.15.tar.xz

    $ sha512sum proxychains-ng-4.15.tar.xz 
    183a3731d1dae498cbe14d31e7f003e8e61a23e90137a1ddc8db12d58d68e1d0123b59d10735023a22628a9b44d78dd195189614915b15d0071351fcf2ba2a1e  proxychains-ng-4.15.tar.xz
    
  4. v4.14Release 4.142019-03-16 · 2019-03-16 23:06 UTC
    查看更新说明

    http://ftp.barfooze.de/pub/sabotage/tarballs/proxychains-ng-4.14.tar.xz

    $ sha512sum proxychains-ng-4.14.tar.xz 
    75a1a4629d2b7ebac9b909a694b395339cf669fa4e23bfcc57938e46377b5619f31c9651d2bc457d1ad10ec1be7747981106392bf8bf65999cb7bb9c748d7e95  proxychains-ng-4.14.tar.xz
    
  5. v4.13Release 4.132018-06-24 · 2018-06-24 23:32 UTC
    查看更新说明

    http://ftp.barfooze.de/pub/sabotage/tarballs/proxychains-ng-4.13.tar.xz

    $ sha512sum proxychains-ng-4.13.tar.xz 
    686ad90d01f21afa161e35a6fc142a9c9e87c419113c0e54ae4c0ba748be917f34ab17b30a876b825bd4b3f32f15b0793ba8c79a5fafc3b106b3762572349757  proxychains-ng-4.13.tar.xz
    

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    ProxyChains-NG ver 4.17 README

    ProxyChains is a UNIX program, that hooks network-related libc functions in DYNAMICALLY LINKED programs via a preloaded DLL (dlsym(), LD_PRELOAD) and redirects the connections through SOCKS4a/5 or HTTP proxies. It supports TCP only (no UDP/ICMP etc).

    The way it works is basically a HACK; so it is possible that it doesn't work with your program, especially when it's a script, or starts numerous processes like background daemons or uses dlopen() to load "modules" (bug in glibc dynlinker). It should work with simple compiled (C/C++) dynamically linked programs though.

    If your program doesn't work with proxychains, consider using an iptables based solution instead; this is much more robust.

    Supported Platforms: Linux, BSD, Mac, Haiku.

    *********** ATTENTION ***********

    this program can be used to circumvent censorship. doing so can be VERY DANGEROUS in certain countries.

    ALWAYS MAKE SURE THAT PROXYCHAINS WORKS AS EXPECTED BEFORE USING IT FOR ANYTHING SERIOUS.

    this involves both the program and the proxy that you're going to use.

    for example, you can connect to some "what is my ip" service like ifconfig.me to make sure that it's not using your real ip.

    ONLY USE PROXYCHAINS IF YOU KNOW WHAT YOU'RE DOING.

    THE AUTHORS AND MAINTAINERS OF PROXYCHAINS DO NOT TAKE ANY RESPONSIBILITY FOR ANY ABUSE OR MISUSE OF THIS SOFTWARE AND THE RESULTING CONSEQUENCES.

    *** Installation ***

    needs a working C compiler, preferably gcc

    ./configure --prefix=/usr --sysconfdir=/etc make [optional] sudo make install [optional] sudo make install-config (installs proxychains.conf)

    if you dont install, you can use proxychains from the build directory like this: ./proxychains4 -f src/proxychains.conf telnet google.com 80

    Changelog:

    Version 4.17

    • add hook for close_range function, fixing newer versions of openssh
    • fat-binary-m1 option for mac
    • fix DNS error handling in proxy_dns_old
    • simplify init code
    • fix openbsd preloading
    • fix double-close in multithreaded apps
    • various improvements to configure script

    Version 4.16

    • fix regression in configure script linker flag detection
    • remove 10 year old workaround for wrong glibc getnameinfo signature
    • support for new DYLD hooking method for OSX Monterey
    • netbsd compilation fix
    • support IPv6 localnets
    • more user-friendly error message when execvp fails
    • proxy_getaddrinfo(): fill in ai_socktype if requested

    Version 4.15

    • fix configure script for buggy binutils version
    • initialize rand_seed with nano-second granularity
    • add support for numeric ipv6 in getaddrinfo
    • fix bug in getaddrinfo when node is null and !passive
    • add dnat feature
    • add raw proxy type
    • add haiku support
    • add proxy_dns_old to emulate proxychains 3.1 behaviour
    • add new proxy_dns_daemon feature (experimental)
    • various other fixes

    Version 4.14

    • allow alternative proto://user:pass@ip:port syntax for proxylist
    • fix endless loop in round robin mode when all proxies are down (#147)
    • fix compilation on android (#265)
    • fix fd leak in forked processes (#273)
    • skip connection attempt to nullrouted ips
    • allow hostnames for proxylist under specific circumstances

    Version 4.13

    • fix robustness of DNS lookup thread and a segfault
    • fix socks5 user/pass auth on non-conforming servers
    • fix memory leak
    • add support for Solaris

    Version 4.12

    • fix several build issues
      • for MAC
      • with -pie
      • with custom CC
    • compatibility fix for some GUI apps (8870140)
    • compatibility fix for some HTTP proxies (cf9a16d)
    • fix several warnings for cleaner build on debian
    • fix random_chain on OSX (0f6b226)

    Version 4.11

    • preliminary IPv6 support
    • fixed bug in hostsreader
    • preliminary support for usage on OpenBSD (caveat emptor)

    Version 4.10

    • fix regression in linking order with custom LDFLAGS
    • fix segfault in DNS mapping code in programs with > ~400 different lookups

    Version 4.9

    • fix a security issue CVE-2015-3887
    • add sendto hook to handle MSG_FASTOPEN flag
    • replace problematic hostentdb with hostsreader
    • fix compilation on OpenBSD (although doesn't work there)

    Version 4.8.1:

    • fix regression in 4.8 install-config Makefile target

    Version 4.8:

    • fix for odd cornercase where getaddrinfo was used with AI_NUMERICHOST to test for a numeric ip instead of resolving it (fixes nmap).
    • allow usage with programs that rely on LD_PRELOAD themselves
    • reject wrong entries in config file
    • print version number on startup

    Version 4.7:

    • new round_robin chaintype by crass.
    • fix bug with lazy allocation when GCC constructor was not used.
    • new configure flag --fat-binary to create a "fat" binary/library on OS X
    • return EBADF rather than EINTR in close hook. it's legal for a program to retry close() calls when they receive EINTR, which could cause an infinite loop, as seen in chromium.

    Version 4.6:

    • some cosmetic fixes to Makefile, fix a bug when non-numeric ip was used as proxy server address.

    Version 4.5:

    • hook close() to prevent OpenSSH from messing with internal infrastructure. this caused ssh client to segfault when proxified.

    Version 4.4:

    • FreeBSD port
    • fixes some installation issues on Debian and Mac.

    Version 4.3:

    • fixes programs that do dns-lookups in child processes (fork()ed), like irssi. to achieve this, support for compilation without pthreads was sacrified.
    • fixes thread safety for gethostent() calls.
    • improved DNS handling speed, since hostent db is cached.

    Version 4.2:

    • fixes compilation issues with ubuntu 12.04 toolchain
    • fixes segfault in rare codepath

    Version 4.1

    • support for mac os x (all archs)
    • all internal functions are threadsafe when compiled with -DTHREAD_SAFE (default).

    Version 4.0

    • replaced dnsresolver script (which required a dynamically linked "dig" binary to be present) with remote DNS lookup. this speeds up any operation involving DNS, as the old script had to use TCP. additionally it allows to use .onion urls when used with TOR.
    • removed broken autoconf build system with a simple Makefile. there's a ./configure script though for convenience. it also adds support for a config file passed via command line switches/ environment variables.

    Version 3.0

    • support for DNS resolving through proxy supports SOCKS4, SOCKS5 and HTTP CONNECT proxy servers. Auth-types: socks - "user/pass" , http - "basic".

    When to use it ?

    1. When the only way to get "outside" from your LAN is through proxy server.
    2. To get out from behind restrictive firewall which filters outgoing ports.
    3. To use two (or more) proxies in chain: like: your_host <--> proxy1 <--> proxy2 <--> target_host
    4. To "proxify" some program with no proxy support built-in (like telnet)
    5. Access intranet from outside via proxy.
    6. To use DNS behind proxy.
    7. To access hidden tor onion services.

    Some cool features:

    • This program can mix different proxy types in the same chain like: your_host <-->socks5 <--> http <--> socks4 <--> target_host
    • Different chaining options supported random order from the list ( user defined length of chain ). exact order (as they appear in the list ) dynamic order (smart exclude dead proxies from chain)
    • You can use it with most TCP client applications, possibly even network scanners, as long as they use standard libc functionality. pcap based scanning does not work.
    • You can use it with servers, like squid, sendmail, or whatever.
    • DNS resolving through proxy.

    Configuration:

    proxychains looks for config file in following order:

    1. file listed in environment variable PROXYCHAINS_CONF_FILE or provided as a -f argument to proxychains script or binary.
    2. ./proxychains.conf
    3. $(HOME)/.proxychains/proxychains.conf
    4. $(sysconfdir)/proxychains.conf **

    ** usually /etc/proxychains.conf

    The first proxy of [ProxyList] may be reached through a unix domain socket instead of ip and port, e.g. the SOCKS proxy of an ssh tunnel bound to a socket only its owner can access:

    $ ssh -N -o StreamLocalBindMask=0177 -D ~/.ssh/sock/socks.sock relay
    [ProxyList]
    socks5	unix:/home/user/.ssh/sock/socks.sock
    

    the path must be absolute and at most 107 characters long. such a proxy can only be the first one of the chain, and can not be combined with other proxies in random_chain or round_robin_chain mode.

    Usage Example:

    $ proxychains telnet targethost.com
    

    in this example it will run telnet through proxy(or chained proxies) specified by proxychains.conf

    Usage Example:

    $ proxychains -f /etc/proxychains-other.conf telnet targethost2.com
    

    in this example it will use different configuration file then proxychains.conf to connect to targethost2.com host.

    Usage Example:

    $ proxyresolv targethost.com
    

    in this example it will resolve targethost.com through proxy(or chained proxies) specified by proxychains.conf

    Known Problems:

    • newer versions of nmap try to determine the network interface to use even if it's not needed (like when doing simple syn scans which use the standard POSIX socket API. this results in errors when proxychains hands out an ip address to a reserved address space. possible workarounds: disable proxy_dns, use a numeric ip, or use nmap's native support for SOCKS proxies.

    • Mac OS X 10.11 (El Capitan) ships with a new security feature called SIP that prevents hooking of system apps. workarounds are to partially disable SIP by issuing csrutil enable --without debug in recovery mode, or to copy the system binary into the home directory and run it from there. see github issue #78 for details.

    • the glibc dynlinker has a bug or security feature that inhibits dlopen()ed modules from being subject to the same dlsym hooks as installed for the main program. this mainly affects scripting languages such as perl or python that heavily rely on dlopen() for modules written in C to work. there are unconfirmed reports that it works as root though. musl libc is unaffected from the bug.

    Useful links

    the following sites may prove useful to check for leaks: https://ipfighter.com/ https://browserleaks.com/webrtc https://dnsleaktest.com http://check.torproject.org - tor specific http://ifconfig.me - can be used via curl http://ifconfig.io/

    Community:

    #proxychains on irc.libera.chat

    Donations:

    bitcoins donations are welcome - please send to this address: 1C9LBpuy56veBqw5N33sZMoZW8mwCw3tPh