id = "proxychains" name = "proxychains-ng" homepage = "https://github.com/rofl0r/proxychains-ng" # The project's own repository description, trimmed. description = "A preloader which hooks calls to sockets in dynamically linked programs and redirects it through one or more socks/http proxies." executables = ["proxychains", "proxychains4"] # It works by preloading a shared library into the target process — LD_PRELOAD # on Linux and DYLD_INSERT_LIBRARIES on macOS — so there is no Windows build. platforms = ["macos", "linux"] [dotfiles] # The project's own README gives the search order for the config file: # # 1. "file listed in environment variable PROXYCHAINS_CONF_FILE or provided # as a -f argument" # 2. ./proxychains.conf # 3. $(HOME)/.proxychains/proxychains.conf # 4. $(sysconfdir)/proxychains.conf # # Only the third is the user's own copy; the second is per-project and the # fourth is the system default outside the home directory. paths = ["~/.proxychains/proxychains.conf"] exclude = [] # The file is not a credential end to end — the chain mode, `proxy_dns`, the # timeouts and the `localnet` exclusions are ordinary settings — so only the # proxy lines are lifted out, below. secret = [] # Read once when the preloaded library initialises in each launched process, # so rewriting it between runs is harmless. side_effect = false # The shipped src/proxychains.conf documents the ProxyList entry format as # # type ip port [user pass] # ... # proxy types: http, socks4, socks5, raw # ( auth types supported: "basic"-http "user/pass"-socks ) # # with `socks5 192.168.67.78 1080 lamer secret` among its own examples, so a # proxy line can end in a username and a password in the clear. Those two # keywords are exactly the types the same note says carry authentication; # `socks4`'s fifth field is a userid rather than a password and `raw` takes # none, so their lines stay ordinary content. A socks5 or http line without # credentials is lifted out too — over-classifying costs a little convenience, # and there is no way to match "only the tail of the line". [[dotfiles.secret_paths]] file = "~/.proxychains/proxychains.conf" match = { prefix = ["socks5", "http"] } [commands] format = 1 label = "Run through proxies" description = "Run a program with its TCP connections forced through the configured proxy chain. Uses proxychains4; chain mode and proxy list live in the config file." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = false, short_attached = false, short_bundles = false } [[commands.source]] id = "man" kind = "manual" url = "https://manpages.debian.org/testing/proxychains4/proxychains4.1.en.html" revision = "2026-10-27" evidence = """ proxychains4 --help proxychains4 [ -f configfile.conf ] """ [[commands.field]] id = "config" label = "Config file" description = "Defaults to the search order documented by proxychains-ng when empty." type = "path" path = { kind = "file", role = "input" } option = ["-f"] sources = ["man"] [[commands.field]] id = "program" label = "Program" type = "string" position = 0 min = 1 sources = ["man"] [[commands.field]] id = "args" label = "Program arguments" type = "string" position = 1 multiple = true sources = ["man"] [[commands.task]] id = "run" label = "Run a program via proxies" fields = ["program", "args"] required = ["program"] [[commands.task]] id = "run_conf" label = "Run with a specific config" fields = ["config", "program", "args"] required = ["config", "program"] [[commands.group]] id = "basic" label = "Basic" fields = ["config", "program", "args"]