https://github.com/bdandy/go-socks4
Socks4 implementation for Go, compatible with net/proxy
https://github.com/bdandy/go-socks4
go proxy socks socks4
Last synced: 4 months ago
JSON representation
Socks4 implementation for Go, compatible with net/proxy
- Host: GitHub
- URL: https://github.com/bdandy/go-socks4
- Owner: bdandy
- License: mit
- Created: 2016-01-29T08:05:32.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2023-02-11T07:50:38.000Z (over 3 years ago)
- Last Synced: 2024-06-19T20:49:53.031Z (almost 2 years ago)
- Topics: go, proxy, socks, socks4
- Language: Go
- Size: 36.1 KB
- Stars: 7
- Watchers: 1
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# go-socks4
Socks4 implementation for Go, compatible with net/proxy.
## Features
- `socks4`
- `socks4a`
## Usage
Just import `_ "github.com/bdandy/go-socks4"` to add `socks4` support
```go
package main
import (
"errors"
"log"
"net/url"
_ "github.com/bdandy/go-socks4"
"golang.org/x/net/proxy"
)
func main() {
addr, _ := url.Parse("socks4://ip:port")
dialer, err := proxy.FromURL(addr, proxy.Direct)
conn, err := dialer.Dial("tcp", "google.com:80")
if err != nil {
// handle error
if errors.Is(err, socks4.ErrDialFailed) {
log.Printf("invalid proxy server %s", addr)
return
}
if errors.Is(err, socks4.ErrConnRejected) {
log.Printf("google.com:80: %s", err)
return
}
}
// use opened network connection
_ = conn
}
```
## Tests
If you know proxy server to connect to tests should be running like this
`
go test -socks4.url=socks4://localhost:8080
`