Integrationen · Zwischenstufe

Proxys in Go und PHP: net/http Transport, x/net/proxy, cURL und Guzzle

Konfigurieren Sie explizit einen HTTP- oder SOCKS-Proxy in Go und PHP, halten Sie Anmeldeinformationen aus Protokollen fern und legen Sie Zeitüberschreitungen fest. Die Beispiele umfassen http.Transport, cURL und Guzzle; Gateway-Einstellungen steuern, welchen Ausgang der Client erhält.

2 min Lesezeit 6 Abschnitte Geprüft Redaktion Proxy Cyber

Go: http.Transport#

Go
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))
}

Die Wiederverwendung von Verbindungen und die IP-Zuweisung sind unterschiedliche Steuerelemente. Eine Clientsitzung verwendet Sockets wieder. Nur das zugewiesene Gateway bestimmt die Rotation und das Sticky-Session-Verhalten. Verwenden Sie die mit Ihrem Dienst bereitgestellten Sitzungsparameter und überprüfen Sie den Exit über mehrere Anfragen hinweg. Das Schließen eines Sockets oder das Senden von Connection: close garantiert keine andere IP.

Go: Proxy pro Request auswählen#

Go
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))
	},
}

Go: SOCKS5#

Go
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#

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

Checkliste#

  • Verwenden Sie für jeden unabhängigen Workflow eine eindeutige Sitzungskennung, sofern das zugewiesene Gateway dies unterstützt. Bestätigen Sie die zulässigen Dauer- und Standortparameter in Ihren Verbindungsdetails. Ein Heimgerät kann die Verbindung vor Ablauf der angeforderten Dauer trennen; Eine Sticky-Sitzung ist keine Garantie für die gleiche IP-Adresse über mehrere Tage hinweg. Vergleichen Sie für eine feste Adresse ein dediziertes statisches Produkt.
  • Timeouts skaliert auf den Exit-Typ; ein Wiederholungsversuch bei Transportfehlern.
  • Protokollieren Sie niemals die Proxy-URL: Sie enthält das Passwort. Protokollieren Sie stattdessen die Sitzungs-ID.

Fragen, die Menschen stellen#

Funktioniert Go's http.ProxyFromEnvironment?

Ja: Exportieren Sie HTTPS_PROXY und HTTP_PROXY mit der Proxy Cyber-URL und verwenden Sie http.ProxyFromEnvironment als Proxy-Funktion des Transports. NO_PROXY schließt lokale Hosts aus.

Dein Konto

Verwalten Sie Ihre Proxies in einem Konto

Vergleichen Sie Netzwerke, geben Sie Bestellungen auf und verfolgen Sie Ihren Kontostand und Supportanfragen über ein Dashboard. Unser Team prüft die Zahlungen und stellt nach der Lieferung Verbindungsdetails bereit.

Konto erstellen