勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ

PHPでプロキシ経由で他サーバーに接続する方法(file_get_contents / curlの2パターン)

   2024/02/25  PHP

PHPでfile_get_contentsやcurlで他サーバに接続する際に自サーバのIPは隠したかった。かといって偽装するのも難しいとのこと。ただ、プロキシサーバーを経由することで対応可能。以下に対応方法をメモ。

 

file_get_contentsの場合

$url = 'http://hogehoge.com';
$option = array(
    'http' => array(
        'proxy' => 'tcp://プロキシIP:プロキシポート番号',
        'request_fulluri' => true,
    ),
);
$proxy = stream_context_create($option);
$result = file_get_contents($url, false, $proxy);

 

curlの場合

$url = 'http://hogehoge.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXY, 'http://プロキシIP':'プロキシポート番号');
$result = curl_exec($ch);

 

その他

「file_get_contents使用」「phpのエラー表示がON」「プロキシサーバでログイン認証の必要がある」の3つのケースが重なった場合にwarningエラーが出るので注意。

 - PHP

  関連記事

【2024年版】PHPMailerでGmailのSMTPサーバを経由してメールを送信する方法
【2024年版】PHPMailerでGmailのSMTPサーバを経由してメールを送信する方法

だいぶ前に同じようなことをメモしたが、そちらの方法だと送信できずエラー内容を見た ...

UTF-16にエンコードされている文字列をUTF-8へデコード
UTF-16にエンコードされている文字列をUTF-8へデコード

エンコードされている文字列であまり見かけない感じのものがあった。UTF-8やSh ...

AjaxのJSONP使用でPHPで作った配列をJSに返す方法
AjaxのJSONP使用でPHPで作った配列をJSに返す方法

AというサイトからBというサイトにAjax通信し、Bの方ではMySQLに接続して ...

PHPでテンプレートPDFに動的に文字や数値を追記し出力する方法(TCPDF&FPDI)
PHPでテンプレートPDFに動的に文字や数値を追記し出力する方法(TCPDF&FPDI)

請求書や領収書のテンプレートがあり、そちらに対して動的に文字・数値を追記し出力さ ...

CodeIgniter3でログをファイルに出力する方法
CodeIgniter3でログをファイルに出力する方法

Codeigniter3でエラーログの設定を行い特定のファイルに出力させ当該ログ ...