Integrationer · Mellanliggande nivå

Proxyserver i Go och PHP: net/http Transport, x/net/proxy, cURL och Guzzle

Konfigurera en HTTP- eller SOCKS-proxy explicit i Go och PHP, håll referenser ur loggarna och ställ in timeouts.Exemplen täcker http.Transport, cURL och Guzzle; gatewayinställningar kontrollera vilka utgångar klienten tar emot.

2 min lästid 6 sektioner Granskad Redaktionsteamet Proxy Cyber

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

Återanvändning av anslutning och IP-tilldelning är olika kontroller. En klientsession återanvänder sockets; endast den tilldelade gatewayen bestämmer rotation och sessionsbeteendet för fasta sessioner. Använd sessionsparametrarna som medföljer tjänsten och verifiera utgången över flera begäranden. Att stänga en socket eller skicka Connection: close garanterar inte en annan IP.

Gå: välja proxy per begäran#

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å till: 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: Inställningar för webbläsare#

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: Företagstjänster#

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

Checklista#

  • Använd en separat sessionsidentifierare för varje oberoende arbetsflöde, där den tilldelade gatewayen stöder det. Bekräfta tillåtna parametrar för varaktighet och plats i anslutningsinformationen. En bostadsenhet kan kopplas bort före begärd varaktighet; en fast session är inte en garanti för samma IP-adress under flera dagar. För en fast adress jämför med en dedikerad statisk produkt.
  • Timeouts skalas till utgångstypen; ett försök på transportfel.
  • Logga aldrig proxy- URL: n, den innehåller lösenordet. Logga sessions- id istället.

Frågor som folk ställer#

Fungerar Gos http.ProxyFromEnvironment?

Ja: exportera HTTPS_PROXY och HTTP_PROXy med URL-adressen för nyckelproxyn och använd http.ProxyFromEnvironment som Transports proxyfunktion.NO_PROX Y utesluter lokala värdar.

Ditt konto -

Hantera alla dina proxyer på ett konto

Jämför nätverk, placera beställningar och följ ditt saldo och supportbegäranden från en enda kontrollpanel.Vårt team granskar betalningar och ger anslutningsuppgifter efter leverans.

Skapa konto