読者です 読者をやめる 読者になる 読者になる

詩と創作・思索のひろば

ドキドキギュンギュンダイアリーです!!!

go-sql-driver/mysql の接続に SOCKS5 プロキシを利用する

Go では proxychains みたいな方法が利用できないので、プログラム側で対応してやる必要がある。Go で SOCKS5 プロキシを利用する - 詩と創作・思索のひろば と同様に golang.org/x/net/proxy を利用して実現できる。

import (
    "database/sql"
    "net"
    "golang.org/x/net/proxy"
    "github.com/go-sql-driver/mysql"
)

func main() {
    dialer := proxy.FromEnvironment()
    mysql.RegisterDial("tcp", func(network string) (net.Conn, error) {
        return dialer.Dial("tcp", network)
    })

    db, err := sql.Open("mysql", dsn)
    ....
}

という感じ。DSN を変える必要はない。

all_proxy=socks5://127.0.0.1:10000 などと環境変数を設定して起動してやる。