proxycheck(1)
๐ proxycheck โ open proxy server checker ๐
okay so bestie, we're in the General Commands Manual, section 1 โ yes, the proxycheck(1) girlies know what's up. sit down, grab a strawberry ๐, and let's talk about the open proxy checker that literally eats.
โจ NAME โจ
proxycheck โ open proxy server checker ๐ต๏ธโ๏ธ
๐ธ SYNOPSIS ๐ธ
proxycheck options host[:proto_port_spec]...
๐ฆ DESCRIPTION ๐ฆ
okay so proxycheck is this simple open proxy checking tool, and she is fast โ like, capable of quickly discovering open proxy servers across many hosts at once. her whole main character goal? detecting an open proxy server so it can't get abused by various "bad guys" โ mostly spammers, no cap. ๐ซ๐ง
having a wide-open proxy service running on a publicly accessible network is a very bad idea nowadays, and proxycheck may be used to find such a system so you can either secure it, or refuse servicing it until it gets secured properly. it's giving... intervention. ๐
so how does she tell if a given host is running an open proxy service? proxycheck tries to connect to a given destination system via a host and perform some actions, trying to talk with the destination system. if the talk is successful, proxycheck assumes the proxy service is running and wide-open. periodt. โจ
proxycheck supports all commonly used proxy protocols, namely:
- HTTP CONNECT method
- SOCKS versions 4 and 5
- Wingate "telnet"-style proxies
in the future, support for more protocols may be added. she's growing, your honor. ๐ฑ
please note: with the current number of various trojan horses circulating around, each opening a proxy on a random port, it is not really enough to probe for standard (in whatever reason) ports built into proxycheck. instead, it is highly recommended to use a list of currently active ports maintained by several people on the 'net. iykyk ๐
๐ OPTIONS ๐
the following command-line options are recognized:
-hโ print a short help and exit. short n sweet ๐-vโ increase the verbosity level. all debugging messages will go to standard error stream.-d deshost:destport(required) โ try to establish a proxied connection to the givendsthost, portdstport. this option is required. no skipping, bestie. ๐ซถ-c check[:params](required) โ the "method"proxycheckwill use when talking to a destination system to determine if a proxy is open or not. interpretation ofparamsis check-dependant. this option is required. several methods are available:chat:sendstr:expectstrโ try to perform a simple "chat" with the destination system: send the string given assendstrand wait forexpectstron output. ifsendstris empty,proxycheckwill send the proxy parameters in the form
protocol:ip-address:portnumber
to the remote system. proxy assumed to be open if expectstr is found. ๐ฌ
dsbl(no parameters accepted) โ try to submit all found proxies to the DSBL.org-like system, seehttp://dsbl.org/for more details. all the parameters required (username, password, recipient address, cookie server, ...) are expected to be found in environment variables. runproxycheckwith-hoption to see a list of recognized variables and their default values. by default,proxycheckwill anonimously submit all found proxies tounconfirmed.dsbl.org(which isn't very useful). for trusted DSBL user, at leastDSBL_USERandDSBL_PASSvariables should be set properly. ๐ฎ
-p proto_port_specโ specifies protocol and ports to connect to. if not given,proxycheckwill try its built-in default list. this option may be specified more than once. see below forproto_port_spec. ifproto_port_specis specified for a single host to check, it applies to that host only, and no protocols/ports in the default list will be checked for that host. ๐ฏ-Dโ do not reset default port list when using-poption, but prepend new ports to it instead.-aโ use more "advanced" ports/protocols. the more-a's given, the more ports/protocols will be probed. for a complete list of all ports and protocols and their level, executeproxycheckwith-hoption. stacking them like pokรฉmon cards fr fr ๐ฅ-t timeoutโ a timeout, in secounds, for every operation. default value is 30 secounds. the timer starts at the connection attempt to the proxy itself, after sending the "connect" command to the proxy and so on. โฐ-m maxconnโ do not attempt to make more thanmaxconnparallel connections. by default, maximum number of parallel connections limited by the operating system and on most systems it is around 1000.-M maxhconnโ do not make more thanmaxhconnparallel connections to the same host (default is unlimited). this may be useful for overloaded proxies which can't handle many parallel connections using different ports/protocols, but may significantly slow down the whole process. ๐ข-sโ when an open proxy is found on a given IP, stop probing for other ports/protocols for this IP. best used when many IPs are tested, and/or with-Moption. this is because currently,proxycheckwill not make any new connections to such host, but will wait for already active connections to complete. she's polite like that ๐-b bindaddrโ usebindaddras a source address for all outgoing connections.-nโ write a line about definitely closed proxies to stdout in addition to writing about open proxies, in a form
127.0.0.1 http:8080 closed
-xโ print extended proxy information (proxy-agent and the like) if available. this will be on the same "open" (or "closed" with-n) line, last, enclosed in square brackets[].-i filenameโ read list of hosts to check from a given filefilename(in addition to command line), or from stdin iffilenameis-.
๐ Protocol and Port specification ๐
proxy protocols and ports to try (proto_port_spec) specified using the following syntax:
[proto:][port,port,port]
like:
hc:3128,8080 (http protocol on ports 3128 and 8080)
hc: (default list of ports for http protocol)
3128 (try http protocol on standard http port 3128)
1234 (try all protocols on non-standard port 1234)
run proxycheck -h to see a list of supported protocols and default ports. ๐
๐ USAGE ๐
simplest usage of proxycheck is to try to connect to e.g. your own mailserver with the chat check method. first, connect to your mailserver on port 25 to see which line it outputs upon connection (SMTP greething line), and use it with chat:
proxycheck -d yourmailserver.example.org:25 \
-c chat::greething ip.add.re.ss...
proxycheck will write a single line for every proto:port it finds to be open on stdout, in the form:
127.0.0.3 hc:80 open
where 127.0.0.3 is an IP address of a host being tested, hc is the protocol name (HTTP CONNECT, consult proxycheck -h for a full list of protocols) and 80 is a port number where the proxy service is running.
in addition, if proxycheck is able to guess outgoing IP address of a proxy as seen by a destination system, and if that address is different from input proxycheck is connecting to, it will print this information too on the same line, like:
127.0.0.2 hc:80 open 127.0.0.3
where 127.0.0.3 is outgoing IP address of a multihomed/cascaded proxy as reported by the destination system. this IP address is hint only, there is no simple and reliable way currently exists for proxycheck to determine that information. proxycheck is able to parse a line sent by remote system in -c chat mode โ in this mode, proxycheck skips all printable characters after expstr it found and searches for opening `[`, when tries to find closing ']' and interpret digits and dots in between as an IP address which gets printed like above. if your mailserver's initial reply contains remote system's IP, or if your mailserver replies with remote system's IP address to HELO/EHLO command, this feature may be useful (in the last case, HELO command should be specified in chat). ๐ต๏ธโ๏ธ
when -n option is specified, for proto:ports which aren't running open proxy service, and for which proxycheck is able to strongly determine this, a line in the following format will be written:
127.0.0.4 hc:80 closed
note however that in most cases there is no way to reliable determine whenever a given service is not open: for example, an open proxy server may be overloaded and refusing connections. in most cases, proxycheck assumes proxy is in unknown state, only a few codes are recognized as real indication of "closed" state. don't come for her, she's doing her best ๐ญ
when -x option is specified, there will be additional proxy info written on the same line (if available), like:
127.0.0.2 hc:80 open 127.0.0.3 [AnalogX 3.1415926]
127.0.0.3 hc:80 open [AnalogX 3.1415926]
127.0.0.4 hc:80 closed [AnalogX 3.1415926]
one may see some detail of proxycheck's operations giving sufficient number of -v options in the command line. verbosity level of 5 (-vvvvv) will show almost everything. all the debugging output will go to the standard error stream and thus will not affect normal operations (when you process proxycheck's output using some script). ๐ง
โญ EXIT CODE โญ
proxycheckwill exit with code100if at least one open proxy server was found. ๐- in case of incorrect usage, it will exit with code
1. ๐ - if no open proxies where found,
proxycheckwill return0.
๐ LICENSE ๐
this program is free software. it may be used and distributed in the terms of General Public License (GPL) version 2 or later. free as in... you know the vibe ๐
๐ซถ AUTHOR ๐ซถ
proxycheck written by Michael Tokarev <mjt@corpit.ru>. latest version of this utlilty may be found at http://www.corpit.ru/mjt/proxycheck.html.
and that's the whole page bestie!! ๐ this was section 1 of the General Commands Manual, proxycheck(1), and ngl the footer didn't come with a date on it so we're not gonna make one up โ the source line is just the manual itself, proxycheck(1), general commands manual. slay, go check some proxies, stay safe, mwah ๐โจ
๐ฆ where this page comes from
- debian bookworm: proxycheck 0.49a-7 ยท GPL-2.0-or-later
- debian trixie: proxycheck 0.49a-8 ยท GPL-2.0-or-later
- ubuntu noble: proxycheck 0.49a-7 ยท GPL-2.0-or-later
- ubuntu questing: proxycheck 0.49a-8
- ubuntu resolute: proxycheck 0.49a-10 ยท GPL-2.0-or-later
- ubuntu stonking: proxycheck 0.49a-10 ยท GPL-2.0-or-later
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms