HTTP Proxy Client is the small set of libraries and scripts, which provides transparent access to Internet via HTTP proxy for programs, which uses TCP/IP for communication.
The list of programs includes: telnet, ftp, licq, cvs, smth else? Project implements dynamic library, that can be preloaded before program run. The library substitutes some system calls (connect(), gethostbyaddr(), gethostbyname()), with calls, which makes TCP/IP connection through HTTP proxy. This allows client programs behind HTTP proxy work with Internet without limitations.
At the moment tested on i386 Linux, i386/sparc Solaris.
The library provides the following functions as replacement for system functions:
socket() | monitoring |
connect() | connect via proxy in case of external host |
gethostbyname() | DNS resolving |
gethostbyname_r()* | DNS resolving |
gethostbyaddr() | DNS reverse resolving |
gethostbyaddr_r()* | DNS reverse resolving |
getaddrinfo() | network address and service translation |
Library httppcd can be used to add proxy tunneling capability to any program. All you need - is to make final link with -lhttppcd or set LD_PRELOAD to `libhttppcd.so' full path.
The package provides also aliases for common Internet tools: telnetx, ftpx, cvsx, licqx which invokes `proxed *' command.
NOTE: instead of setting LD_PRELOAD to full path of `libhttppcd.so', you can specify the path in LD_LIBRARY_PATH variable.
.httppcrc | Environment | Description |
---|---|---|
proxy host:port | HTTP_PROXY | HTTP proxy host in format <host>[:<port>]. Default port is 8080. |
auth user:pass | HTTP_PROXY_AUTH | HTTP proxy user and password in format <user>:<password>. |
log verbose|quiet | HTTP_PROXY_LOG | Driver mode: verbose quiet. |
libs lib1:lib2:... | HTTP_PROXY_LIBS | Libraries, separated by ':', where original functions are located. |
xdns dnsip | HTTP_PROXY_XDNS | External DNS server address, must be in dot notation; by default is set to isi.edu (128.9.176.32). |
ldns | Use local DNS resolving with native gethostbyname() prior external resolving with ADNS; disabled by default. | |
local network/mask ... | HTTP_PROXY_LOCAL | The list of local networks in format <network>/<mask>, separated by space. |
extern network/mask ... | HTTP_PROXY_EXTERN | The list of external networks in format <network>/<mask>, separated by space. |
useragent Mozilla... | HTTP_PROXY_USERAGENT | Add to connection request header string: User-Agent: <useragent> |
nocache | Add to connection request header strings: Pragma: no-cache Cache-Control: no-cache | |
keepalive | Add to connection request header string: Connection: Keep-Alive | |
timeout 5 | HTTP_PROXY_TIMEOUT | Connection timeout in seconds. -1 wait forever. |
Networks checking algorithm:
httppc: <- CONNECT 195.110.124.188:80 HTTP/1.1 httppc: -> HTTP/1.0 405 Method Not Allowedmean, that your proxy doesn't supports "CONNECT" and httppc will not work at all;