You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kayos@tcp.direct 74c6ab7c9c
Fix: import blunder
4 days ago
.github Update go.yml 4 weeks ago
example Merge branch 'dev' 5 days ago
internal dev overhaul milestone (it works) 5 days ago
logger Refactor + Re-use net.Conn for validation 1 month ago
.gitignore Chore: tidy up 2 months ago
LICENSE Add: SetStaleTime, GetStaleTime, GetMaxWorkers 1 year ago
README.md Update README.md 5 days ago
conductor.go Consistency related adjustments 5 days ago
daemons.go Attempt to address CPU load 4 days ago
debug.go Deprecate but reimplement DebugChannel 5 days ago
defs.go Compatibility 5 days ago
dispense.go Merge branch 'dev' 5 days ago
getters.go Consistency related adjustments 5 days ago
go.mod Chore: go modules 5 days ago
go.sum Chore: go modules 5 days ago
list_management.go Fix: import blunder 4 days ago
mr_worldwide.go Consistency related adjustments 5 days ago
mystery_dialer.go Consistency related adjustments 5 days ago
mystery_resolver.go Revert back to original struct name 5 days ago
parse.go Backport: parsing improvement + tests 4 weeks ago
parse_test.go Backport: parsing improvement + tests 4 weeks ago
proto.go dev overhaul milestone (it works) 5 days ago
proxy.go Revert back to original struct name 5 days ago
setters.go Consistency related adjustments 5 days ago
socks5_server.go Consistency related adjustments 5 days ago
stats.go Consistency related adjustments 5 days ago
validator_engine.go Consistency related adjustments 5 days ago

README.md

Prox5

GoDoc Go Report Card IRC

SOCKS5/4/4a validating proxy pool + server

Prox5 is a golang library for managing, validating, and accessing thousands upon thousands of arbitrary SOCKS proxies.

Notably it features interface compatible dialer functions that dial out from different proxies for every connection, and a SOCKS5 server that utilizes those functions.


Initial Validation Sequence

  • TCP Dial to the endpoint
  • HTTPS GET request to a list of IP echo endpoints

Prox5 will then store the endpoint's outward appearing IP address and mark it as valid for use.

The Secret Sauce

What makes Prox5 special is largely the Mystery Dialer. This dialer satisfies the net.Dialer interface. Upon using the dialer to connect to and endpoint, Prox5:

  • Loads up a previously verified proxy
  • Attempts to make connection with the dial endpoint using said proxy
  • Upon failure, prox5:
    • repeats this process mid-dial
    • does not drop connection to the client
  • Once a proxy has been successfully used to connect to the target endpoint, prox5 passes the same net.Conn onto the client

Accessing Validated Proxies

  • Retrieve validated 4/4a/5 proxies as simple strings for generic use
  • Use one of the dialer functions with any golang code that calls for a net.Dialer
  • Spin up a SOCKS5 server that will then make rotating use of your validated proxies

The way you choose to use this lib is yours. The API is fairly extensive for you to be able to customize runtime configuration without having to do any surgery.

Things like the amount of validation workers that are concurrently operating, timeouts, and proxy re-use policies may be tuned in real-time. please read the docs.


This project is in development.

It "works" and has been used in "production", but still needs some love.

Please break it and let me know what broke.

See the docs and the example for more details.