0

XML出力を提供するURLがあります。次の形式を使用してブラウザからアクセスできるユーザー名とパスワードが必要です。

http://username:password@url.com

ただし、php ファイルからアクセスしようとすると、403 禁止されます。

$url = "http://username:password@url.com";


$xml = @simplexml_load_file($url);
print_r($http_response_header);

curl を使用してユーザー エージェントをブラウザに設定しようとしましたが、それでもデータがエコーされません。

$username = "user";
$password = "pass";
$process = curl_init("http://user:pass@url.com/feed?feed_id=1");
//curl_setopt($process, CURLOPT_HTTPHEADER, array('Content-Type: application/xml'));
curl_setopt($process, CURLOPT_HEADER, 1);
curl_setopt($process, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($process, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($process, CURLOPT_TIMEOUT, 30);
curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE);
$return = curl_exec($process);
echo $return;

また、pear の http request 2 を使用してみました。これも 403 禁止されています

私がアクセスしようとしているサーバーは、PHP 経由のすべての接続を拒否していますか、それともこれを回避する方法はありますか? ありがとう!

4

1 に答える 1

0

あなたが要求しているページは非常にうるさいようです。ブラウザとまったく同じように、すべてのヘッダーを送信してください。

  • Firefox に Firebug をインストールするか、Chrome のインスペクタを使用します
  • 保護されたページをリクエストしたときに送信されるすべてのヘッダーを書き留めます
  • ブラウザとまったく同じように、php スクリプトからヘッダーを送信します。
  • うまくいかない場合は、Wireshark を使用して、本当に正しいかどうかを確認してください。

このページは、パスワードだけでなく、ユーザー エージェント ヘッダーなども検索していると思われます。

もう 1 つの問題は、サーバーとは異なる IP を持っていることと、IP のみがホワイトリストに登録されていることです。

于 2012-05-21T13:17:38.640 に答える