PHP 代理

Sheeraz Gul 2023年1月30日
  1. 在 PHP 中啟用 cURL 庫
  2. 使用 cURL 和 PHP 建立代理
PHP 代理

PHP 中的代理是通過 cURL 庫建立的。cURL 表示客戶端 URL 是 php 中最強大的擴充套件之一。

Denial Stenberg 建立了 cURL 庫來在不同伺服器之間進行通訊。

cURL 具有可以通過不同的 IP 和埠傳送請求的功能。cUrl 允許我們通過 URL 傳送和接收資料。

本教程演示如何在 PHP 中啟用 cURL 並使用 cURL 建立代理。

在 PHP 中啟用 cURL 庫

在開始建立代理之前,我們需要啟用 cURL 庫。cURL 庫已經存在於 PHP 中,我們必須啟用它。

首先,我們需要檢查是否啟用了 cUrl。建立一個 info.php 檔案並執行它。

<?php
    phpinfo();
?>

當你執行這個檔案時,它會顯示 PHP 的所有資訊。在進行下一步之前,有必要為 PHP 設定 PATH 變數。

如果已設定,則可以繼續。在 info.php 上搜尋 cURL。

如果未啟用,請轉到 PHP 主資料夾並找到 php.ini 檔案。最有可能的路徑是 C:\php74\php.ini

使用文字編輯器開啟 php.ini 檔案。搜尋 curl,你會發現類似這樣的內容:

;extension=php_curl.dll

或者對於較新的 PHP 版本:

;extension=curl

現在刪除 ; 在擴充套件之前。儲存 php.ini 檔案並退出,重新啟動你正在使用的伺服器或本地主機。

extension=curl

再次執行 info.php 並搜尋 cURL support。你會看見:

cURL support: enabled

這意味著 cURL 已啟用,你可以開始了。如果 cURL 仍未啟用,請在擴充套件後嘗試 php_curl.dll 的絕對路徑。

extension=C:/php74/ext/php_curl.dll

使用 cURL 和 PHP 建立代理

cURL 有許多不同的關鍵字用於不同的操作。讓我們看一個為給定 URL 建立代理請求的示例:

//URL you want to apply cURL proxy.
$site = 'http://google.com';

// The Proxy IP address
$proxy_ip = '138.117.84.240';

//The proxy port.
$proxy_port = '999';

//Authentication information for proxy, username and password.
$Username = 'demouser';
$Password = 'demopassword';

//Initiate cURL response
$curl_reponse = curl_init($site);
curl_setopt($curl_reponse, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_reponse, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl_reponse, CURLOPT_HTTPPROXYTUNNEL , 1);

//Setting the IP address for proxy.
curl_setopt($curl_reponse, CURLOPT_PROXY, $proxy_ip);

//Setting the port for proxy.
curl_setopt($curl_reponse, CURLOPT_PROXYPORT, $proxy_port);

//Specifying the authentication information.
curl_setopt($curl_reponse, CURLOPT_PROXYUSERPWD, "$Username:$Password");

//Define the proxy server type, it is not neccessary, incase there is proxy connection aborted error. 
//The defaults type is CURLPROXY_HTTP, and the other options are CURLPROXY_SOCKS4, CURLPROXY_SOCKS4A, CURLPROXY_SOCKS5,and CURLPROXY_SOCKS5_HOSTNAME.
curl_setopt($curl_reponse, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);

//Execute the proxy request.
$output = curl_exec($curl_reponse);

//All the errors with number are given at this link from PHP Manual https://www.php.net/manual/en/function.curl-errno.php
//Error Number
echo curl_errno($curl_reponse).'<br/>';
// Error Info
echo curl_error($curl_reponse).'<br/>';

//Show the output, Return a cURL handle on success, and FALSE if there is an error.
echo $output;

上面的程式碼是建立代理請求以執行 google.com 的設定。該程式碼使用代理身份驗證。

代理不需要連線到給定的 IP 和埠。如果代理連線成功,它將返回 true 或 cURL 控制代碼。

如果有任何錯誤,它將列印錯誤號和資訊並返回 false。請參閱輸出以瞭解最常見的錯誤之一:

28
Failed to connect to 138.117.84.240 port 999: Timed out

這個錯誤主要是因為 IP 和埠。

作者: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook