プロキシの後ろで file_get_contents を使うか?
質問
仕事では、基本的にプロキシを使用してポート 80 などにアクセスする必要があり、各ユーザーに独自のカスタム ログインを使用しています。
私の一時的な回避策は、基本的にプロキシを通して自分自身としてログインし、必要な外部データにアクセスするために、curl を使用することです。
phpの高度な設定のようなものがあり、内部的に、以下のようなものを呼び出そうとするたびに設定することができます。
file_get_contents()
のようなものを呼び出そうとすると、常にプロキシを経由するように設定できる高度なphp設定はありますか?私はWindowsのATMを使用しているので、それが唯一の方法である場合、再コンパイルするのは苦痛です。
私の回避策が一時的なものである理由は、1 人のユーザーの資格情報を使用する代わりに、汎用的で複数のユーザーで動作するソリューションが必要だからです (これを行うためだけに別のユーザー アカウントを要求することを検討しましたが、パスワードは頻繁に変更され、この手法は 10 以上のサイト全体に展開する必要があります)。私は、基本的に、curl の回避策を使用するためにクレデンシャルをハードコードしたくありません。
どのように解決するのですか?
使用方法
file_get_contents()
を認証不要のプロキシ上で使うには、以下のようにします。
(これはテストできません: 私のプロキシは認証が必要です)
$aContext = array(
'http' => array(
'proxy' => 'tcp://192.168.0.2:3128',
'request_fulluri' => true,
),
);
$cxContext = stream_context_create($aContext);
$sFile = file_get_contents("http://www.google.com", False, $cxContext);
echo $sFile;
もちろん、私のプロキシのIPとポートを、あなたのプロキシでOKなものに置き換えてください ;-)
もし、そのようなエラーが発生した場合は.
Warning: file_get_contents(http://www.google.com) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 407 Proxy Authentication Required
プロキシが認証を要求していることを意味します。
プロキシが認証を要求している場合、以下のように数行を追加する必要があります。
$auth = base64_encode('LOGIN:PASSWORD');
$aContext = array(
'http' => array(
'proxy' => 'tcp://192.168.0.2:3128',
'request_fulluri' => true,
'header' => "Proxy-Authorization: Basic $auth",
),
);
$cxContext = stream_context_create($aContext);
$sFile = file_get_contents("http://www.google.com", False, $cxContext);
echo $sFile;
IPとポート、そして今回はLOGINとPASSWORDについても同じです ;-) すべての有効な http オプション .
ここで プロキシ認証 ヘッダをプロキシに渡しています。
そして... ページが表示されるはずです ;-)
関連
-
[解決済み】空の配列要素を削除する
-
[解決済み】ディレクトリ内のファイル数を数える PHP
-
[解決済み】メッセージ。Trying to access array offset on value of type null [重複]配列のオフセットにアクセスしようとしています。
-
[解決済み] プロキシ(ISA-NTLM)の後ろからRuby Gemsをアップデートする方法
-
[解決済み] プロキシサーバーで Git を動かす - "Request timed out" で失敗する
-
[解決済み] cURLでHTTPリクエストを行う(PROXYを使用)
-
[解決済み] HTTP プロキシ経由で Git リポジトリからプルする方法は?
-
[解決済み] プロキシの後ろでDockerイメージをダウンロードできない
-
[解決済み】CNTLMでプロキシの背後でpipを使用する場合
-
[解決済み] 企業のプロキシ.pacの背後でnpmを使用する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] コマンドの同期がとれていない。
-
[解決済み】「初期通信パケットの読み込み」でMySQLサーバーに接続できなくなり、システムエラーになる。0
-
[解決済み】 PHP 未定義関数の呼び出し
-
[解決済み】pdo - 非オブジェクトのメンバー関数prepare()への呼び出し【重複】。
-
[解決済み] $wpdb->update または $wpdb->insert を実行すると、引用符の前にスラッシュが追加される
-
[解決済み】「Fatal error: Class 'MySQLi' not found "を解決するには?
-
[解決済み】未定義のメソッド mysqli_stmt::get_result を呼び出す。
-
[解決済み] 警告:mysqli_fetch_array()は、パラメータ1がmysqli_resultであることを期待する、オブジェクトはで指定された。
-
[解決済み】mysqli::query(): mysqli をフェッチできない
-
[解決済み] PHPの配列を別の配列にコピーする関数はありますか?