Integraties · Gemiddeld

Proxies in Go en PHP: net/http Transport, x/net/proxy, cURL en Guzzle

Een HTTP- of SOCKS-proxy expliciet instellen in Go en PHP, de credentials buiten logs houden en time-outs instellen. De voorbeelden hebben betrekking op http.Transport, cURL en Guzzle; gateway-instellingen die de client verlaten.

2 minuten lezen 6 secties Gecontroleerd Redactie Proxy Cyber

Ga naar: http.Transport#

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

Verbindingshergebruik en IP-toewijzing zijn verschillende bedieningen. Een clientsessie gebruikt sockets; alleen de toegewezen gateway bepaalt rotatie en kleverig-sessiegedrag. Gebruik de sessieparameters die bij uw service worden geleverd, en verifieer de exit via verschillende verzoeken. Het sluiten van een socket of het verzenden van Verbinding: sluiten garandeert geen ander IP-adres.

Ga: kies de proxy per verzoek#

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

Ga: SOKKEN5#

Ga
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: krul#

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

Controlelijst#

  • Gebruik een aparte sessie-identificatie voor elke onafhankelijke workflow, waar de toegewezen gateway het ondersteunt. Bevestig de toegestane duur en locatieparameters in uw verbindingsdetails. Een residentieel apparaat kan voor de gewenste duur worden verbroken; een plakkerige sessie is geen garantie van hetzelfde IP voor dagen. Voor een vast adres, vergelijk een specifiek statisch product.
  • Time-outs naar het exittype geschaald; één keer opnieuw proberen naar transportfouten.
  • Log nooit in op de proxy-URL: het bevat het wachtwoord. Log in plaats daarvan de sessie-id in.

Vragen die mensen stellen#

Werkt Go's http.ProxyFromEnvironment?

Ja: exporteer HTTPS PROXY en HTTP PROXY met de Proxy Cyber URL en gebruik http.ProxyFromEnvironment als de Proxy functie van Transport. NO PROXY sluit lokale hosts uit.

Uw rekening

Beheer uw proxy's in één account

Vergelijk netwerken, plaats bestellingen en volg uw saldo en ondersteuningsverzoeken vanaf één dashboard. Ons team beoordeelt betalingen en verstrekt verbindingsgegevens na levering.

Account aanmaken