Integrasjoner · Mellomliggende nivå

Proxyer i Go og PHP: net/http Transport, x/net/proxy, cURL og Guzzle

Konfigurer en HTTP eller SOCKS proxy eksplisitt i Go og PHP, holde legitimasjon ut av logger, og sette timeouts.Eksemplene dekker http.Transport, cURL og Guzzle; gateway innstillinger kontroll som avslutter klienten mottar.

2 min lesetid 6 seksjoner Gjennomgått Redaksjonsteamet Proxy Cyber

Gå til: http.Transport#

Gå
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))
}

En klientøkt bruker sokler på nytt; bare den tildelte gatewayen bestemmer rotasjon og oppførsel for faste økter. Bruk øktparametrene som følger med tjenesten, og bekreft avslutningen over flere forespørsler. Å lukke en sokkel eller sende Connection: close garanterer ikke en annen IP.

Gå: velge proxy per forespørsel#

Gå
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#

Gå
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: cURL#

PHP
<?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: Guzzle- grensesnitt#

PHP
<?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();

Sjekkliste#

  • Bruk en distinkt øktidentifikator for hver uavhengige arbeidsflyt, der den tildelte gatewayen støtter det. Bekreft tillatt varighet og plasseringsparametre i dine forbindelsesdetaljer. En hjemmeenhet kan koble fra før forespurt varighet; en fast økt er ikke en garanti for samme IP i dager. For en fast adresse, sammenlign et dedikert statisk produkt.
  • Tidsavbrudd skalert til utgangstypen; ett forsøk på transportfeil.
  • Aldri logg mellomtjener- URL: den inneholder passordet. Logg økts- ID i stedet.

Spørsmål folk stiller#

Fungerer Gos http.ProxyFromEnvironment?

Ja: Eksporter HTTPS_PROXY og HTTP_PROXy med nøkkelproxy-URLen, og bruk http.ProxyFromEnvironment som Transports proxyfunksjon. NO_PROX Y utelukker lokale verter.

Din konto og passord

Administrer alle proxyene dine fra én konto

Sammenlign nettverk, legg inn bestillinger og følg saldoen din og forespørsler om støtte fra ett dashbord.Vårt team gjennomgår betalinger og gir tilkoblingsdetaljer etter levering.

Opprett konto