통합 · 중급

Go 및 PHP의 Proxies: net/http Transport, x/net/proxy, cURL 및 Guzzle

Go 및 PHP에서 명시적으로 HTTP 또는 SOCKS 프록시를 구성하고 로그에서 자격 증명을 유지하고 타임 아웃을 설정합니다. 예를 들어 HTTP.Transport, cURL 및 Guzzle을 커버합니다. 클라이언트를 종료하는 게이트웨이 설정 제어가 수신됩니다.

2 분 읽음 6개의 단면도 검토일 편집팀 Proxy Cyber

이동: 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))
}

연결 재사용 및 IP 할당은 다른 제어입니다. 클라이언트 세션은 소켓을 재사용합니다. 할당 된 게이트웨이는 교체 및 끈적한 세션 동작을 결정합니다. 귀하의 서비스로 제공되는 세션 매개 변수를 사용하고 여러 요청을 통해 출구를 확인합니다. 소켓을 닫거나 연결을 전송하십시오. 닫기는 다른 IP를 보장하지 않습니다.

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

이동: 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: 크립#

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: 퍼즐#

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

관련 상품#

  • 지정된 게이트웨이가 지원되는 각 독립적 인 워크플로우에 대한 별도의 세션 식별자를 사용합니다. 연결 세부 사항의 허용 된 기간 및 위치 매개 변수를 확인하십시오. 요청 된 기간 전에 주거 장치가 차단 될 수 있습니다. 끈적한 세션은 일 동안 동일한 IP를 보장하지 않습니다. 고정 된 주소의 경우 전용 정적 인 제품을 비교하십시오.
  • 출구 유형으로 확장 된 Timeouts; 수송 오류에 대한 한 가지 재시동.
  • 프록시 URL을 로그하지 마십시오: 암호가 포함되어 있습니다. 세션 ID를 대신 로그하십시오.

자주 묻는 질문#

HTTP.ProxyFromEnvironment는 무엇입니까?

예: Proxy Cyber URL을 가진 HTTPS PROXY 및 HTTP PROXY를 내보내고 http.ProxyFromEnvironment를 Transport의 프록시 함수로 사용합니다. NO PROXY는 로컬 호스트를 제외합니다.

당신의 계정

한 계정에서 프록시 관리

네트워크, 장소 주문 및 한 대시보드에서 균형 및 지원 요청을 따르십시오. 우리의 팀 리뷰 지불 및 배달 후 연결 세부 사항을 제공합니다.

계정 만들기