讓 PHP 的 cURL 使用 SOCKS5 代理

前言

當你使用 PHP 進行 cURL 要求的時候,如果你又剛好有一個 SOCKS5 代理伺服器,那你就可以讓這個要求透過代理去發送,來使你自己隱藏在一個代理伺服器後面。如果你有這樣的需求,那你可以接著看下去。

操作方式

你可以使用以下參數讓 cURL 用上你的代理:

<?php
    curl_setopt($curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
    curl_setopt($curl, CURLOPT_PROXY, "192.168.1.2:1080");
?>

其中,上述範例的 192.168.1.2:1080 就是你指定的 SOCKS5 代理伺服器。

放在一個 cURL 陣列可能是長這樣的:

<?php

    $curl = curl_init();

    curl_setopt_array($curl, array(
      CURLOPT_URL => 'https://www.google.com',
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_ENCODING => '',
      CURLOPT_MAXREDIRS => 10,
      CURLOPT_TIMEOUT => 0,
      CURLOPT_FOLLOWLOCATION => true,
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_NONE,
      CURLOPT_CUSTOMREQUEST => 'GET',
      CURLOPT_HTTPHEADER => array(),
      CURLOPT_PROXYTYPE => CURLPROXY_SOCKS5,
      CURLOPT_PROXY => "192.168.1.2:1080"
    ));

    $response = curl_exec($curl);
    curl_close($curl);
    echo $response;
?>

這樣你就可以使你的 cURL 經由 SOCKS5 代理伺服器發出要求囉。