Gå til: http.Transport#
package main
import (
"fmt"
"io"
"net/http"
"net/url"
"time"
)
func main() {
proxyURL, _ := url.Parse("http://USER-cc-us:PASS@res.proxy-cyber.com:9000")
client := &http.Client{
Timeout: 45 * time.Second,
Transport: &http.Transport{
Proxy: http.ProxyURL(proxyURL),
DisableKeepAlives: true, // new connection = new exit on the rotating gateway
},
}
resp, err := client.Get("https://api.ipify.org")
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}Genbrug af forbindelse og IP-tildeling er forskellige kontrolelementer. En klientsession genbruger sockets, kun den tildelte gateway bestemmer rotation og funktionsmåde for fastlåst session. Brug de sessionsparametre, der leveres med din tjeneste, og bekræft exit over flere anmodninger. Lukning af en socket eller afsendelse af Connection: close garanterer ikke en anden IP.
Gå: Vælg proxy pr. anmodning#
tr := &http.Transport{
Proxy: func(r *http.Request) (*url.URL, error) {
sid := r.Header.Get("X-Session") // your own hint, never sent to the proxy
r.Header.Del("X-Session")
return url.Parse(fmt.Sprintf("http://USER-cc-de-sid-%s-ttl-10m:PASS@res.proxy-cyber.com:9000", sid))
},
}Gå til: SOCKS5#
import "golang.org/x/net/proxy"
dialer, err := proxy.SOCKS5("tcp", "res.proxy-cyber.com:9001", &proxy.Auth{User: "USER-cc-us", Password: "PASS"}, proxy.Direct)
if err != nil { panic(err) }
tr := &http.Transport{Dial: dialer.Dial}
client := &http.Client{Transport: tr, Timeout: 45 * time.Second}PHP: Brugergrænseflade#
<?php
$ch = curl_init("https://api.ipify.org");
curl_setopt_array($ch, [
CURLOPT_PROXY => "http://res.proxy-cyber.com:9000",
CURLOPT_PROXYUSERPWD => "USER-cc-us:PASS",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CONNECTTIMEOUT => 15,
CURLOPT_TIMEOUT => 45,
CURLOPT_FORBID_REUSE => true, // new exit per call on the rotating gateway
]);
echo curl_exec($ch);
// SOCKS5 with remote DNS
curl_setopt($ch, CURLOPT_PROXY, "res.proxy-cyber.com:9001");
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);PHP: Forbedringer af hjemmesiden#
<?php
use GuzzleHttp\Client;
$sticky = "http://USER-cc-de-city-berlin-sid-cart42-ttl-15m:PASS@res.proxy-cyber.com:9000";
$client = new Client(['proxy' => $sticky, 'timeout' => 45, 'connect_timeout' => 15]);
$r = $client->get('https://api.ipify.org');
echo $r->getBody();Tjekliste#
- Brug et særskilt sessions-id til hver uafhængig arbejdsgang, hvor den tildelte gateway understøtter det. Bekræft de tilladte varigheds- og placeringsparametre i dine forbindelsesoplysninger. En hjemmeenhed kan afbryde forbindelsen før den ønskede varighed; en fastlåst session er ikke en garanti for samme IP i dagevis. For en fast adresse skal du sammenligne med et dedikeret statisk produkt.
- Timeouts skaleret til exit type; et forsøg på transportfejl.
- Log aldrig proxy URL' en: den indeholder adgangskoden. Log session id i stedet.
Spørgsmål folk stiller#
Virker Go's http.ProxyFromEnvironment?
Ja: Eksporter HTTPS_PROXY og HTTP_PROXy med URL-adressen til nøgleproxy, og brug http.ProxyFromEnvironment som Transports proxyfunktion NO_PROX Y udelukker lokale værter.