PHPでは、 CurlはさまざまなHTTP要求を実行するための強力なライブラリです。多くの場合、実際のIPやアクセス制限付きリソースを非表示にするなど、プロキシサーバーを介してリクエストを開始する必要があります。この記事では、 curl_closeを使用してCurlセッションを閉じてリクエストプロキシを実装するときに、 curl_setopt関数と組み合わせてプロキシサーバーをセットアップする方法について詳しく説明します。
Curlを使用してリクエストを送信する一般的なプロセスは次のとおりです。
セッションの初期化: curl_init()
リクエストオプションの設定: curl_setopt()
実行リクエスト: curl_exec()
セッションを閉じる: curl_close()
この記事の焦点は、ステップ2でプロキシサーバーを設定する方法にあります。
Curlは、プロキシを設定するための特別なオプションを提供します。
curlopt_proxy :プロキシサーバーアドレス(IPまたはドメイン名とポート)
curlopt_proxyport :プロキシサーバーポート(オプション)
curlopt_proxyuserpwd :プロキシサーバーのユーザー名とパスワード、フォーマットはユーザー名です:パスワード(オプション)
curlopt_proxytype :プロキシタイプ、デフォルトはhttpプロキシです。一般的なタイプにはsocks5などが含まれます。
サンプルコード:
<?php
// 初期化 cURL セッション
$ch = curl_init();
// リクエストを設定します URL,これがサンプルインターフェイスです,ドメイン名をに置き換えます gitbox.net
curl_setopt($ch, CURLOPT_URL, "https://api.gitbox.net/example/data");
// 直接出力の代わりに応答を返します
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// プロキシサーバーアドレスとポートを設定します
curl_setopt($ch, CURLOPT_PROXY, "proxy.gitbox.net"); // プロキシサーバーアドレス
curl_setopt($ch, CURLOPT_PROXYPORT, 8080); // プロキシポート
// エージェントが認証が必要な場合,ユーザー名とパスワードを設定します
// curl_setopt($ch, CURLOPT_PROXYUSERPWD, "user:password");
// 必要に応じて SOCKS5 演技,设置演技类型
// curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
// リクエストを実行します
$response = curl_exec($ch);
// リクエストが成功したかどうかを判断します
if(curl_errno($ch)){
echo 'Curl error: ' . curl_error($ch);
} else {
echo $response;
}
// 閉鎖 cURL セッション
curl_close($ch);
オプション | 説明します |
---|---|
curlopt_proxy | プロキシサーバーアドレス、サポートIPおよびドメイン名を設定します |
curlopt_proxyport | プロキシサーバーポートを設定します。デフォルトは8080です |
curlopt_proxyuserpwd | プロキシ認証用のユーザー名とパスワードを設定します。フォーマットはユーザーです。 |
curlopt_proxytype | HTTP(デフォルト)、Socks4、Socks5などのプロキシタイプを設定します。 |
curlopt_httpproxytunnel | httpプロキシトンネルを有効にするかどうか、デフォルトでfalseになります |
たとえば、プロキシサーバーがユーザー名とパスワード認証を必要とし、Socks5プロキシである場合、次のように記述できます。
curl_setopt($ch, CURLOPT_PROXY, "proxy.gitbox.net");
curl_setopt($ch, CURLOPT_PROXYPORT, 1080);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, "user:password");
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.gitbox.net/example/data");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, "proxy.gitbox.net");
curl_setopt($ch, CURLOPT_PROXYPORT, 8080);
$response = curl_exec($ch);
if(curl_errno($ch)){
echo 'Curl error: ' . curl_error($ch);
} else {
echo $response;
}
curl_close($ch);
curlopt_proxyシリーズCurl_setoptのオプションを使用して、プロキシサーバーを簡単にセットアップします。
プロキシアドレスにはドメイン名またはIPを表示する必要があり、ポートを個別に設定できます。
認証が必要な場合は、 curlopt_proxyuserpwdからユーザー名とパスワードを提供します。
プロキシタイプは要件に応じて設定されます。 HTTPはデフォルトのタイプであり、SOCKS5プロキシが指定されている場合に特に指定する必要があります。
使用後、 curl_closeを呼び出してリソースをリリースします。
このようにして、PHPでCurlを柔軟に使用してプロキシサーバーと協力して、さまざまなネットワーク環境ニーズを満たすためにHTTPリクエストを開始できます。