fix socket5
This commit is contained in:
parent
31c9e5da5a
commit
dea52191dd
1 changed files with 20 additions and 12 deletions
32
scraper.go
32
scraper.go
|
|
@ -3,9 +3,7 @@ package twitterscraper
|
||||||
import (
|
import (
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
|
||||||
"golang.org/x/net/proxy"
|
"golang.org/x/net/proxy"
|
||||||
"log"
|
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
|
@ -121,21 +119,31 @@ func (s *Scraper) SetProxy(proxy string) error {
|
||||||
|
|
||||||
// SetProxy set socks5 proxy in the format `HOST:PORT`
|
// SetProxy set socks5 proxy in the format `HOST:PORT`
|
||||||
func (s *Scraper) SetSocks5Proxy(socks5 string) error {
|
func (s *Scraper) SetSocks5Proxy(socks5 string) error {
|
||||||
log.Println(socks5)
|
baseDialer := &net.Dialer{
|
||||||
if dialer, err := proxy.SOCKS5("tcp", socks5, nil, proxy.Direct); err != nil {
|
Timeout: 30 * time.Second,
|
||||||
return errors.New(fmt.Sprintf("can't connect to the socks5 proxy: %s, err: %s", socks5, err.Error()))
|
KeepAlive: 30 * time.Second,
|
||||||
|
}
|
||||||
|
if socks5 != "" {
|
||||||
|
dialSocksProxy, err := proxy.SOCKS5("tcp", socks5, nil, baseDialer)
|
||||||
|
if err != nil {
|
||||||
|
return errors.New("Error creating SOCKS5 proxy")
|
||||||
|
}
|
||||||
|
if contextDialer, ok := dialSocksProxy.(proxy.ContextDialer); ok {
|
||||||
|
dialContext := contextDialer.DialContext
|
||||||
|
s.client = &http.Client{
|
||||||
|
Transport: &http.Transport{
|
||||||
|
DialContext: dialContext,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return errors.New("Failed type assertion to DialContext")
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
s.client = &http.Client{
|
s.client = &http.Client{
|
||||||
Transport: &http.Transport{
|
Transport: &http.Transport{
|
||||||
Dial: dialer.Dial,
|
DialContext: (baseDialer).DialContext,
|
||||||
// TLSNextProto: make(map[string]func(authority string, c *tls.Conn) http.RoundTripper),
|
|
||||||
DialContext: (&net.Dialer{
|
|
||||||
Timeout: 10 * time.Second,
|
|
||||||
}).DialContext,
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Println(s.client)
|
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue