0

Bing ウェブマスター ツールによって生成された統計データを読み込もうとしています。目的のデータに基づいて URL を作成し、それを読み込もうとしています。file_get_contents() は https では機能しないため、curl ベースの関数と fopen の両方を試しました。

これは可能ですか、または Bing はこのデータ ストリームがリモート アクセスされるのを何らかの方法でブロックしますか? Google にはログイン プロセスがあることは知っていますが、Bing にはそのようなものは見つかりませんでした。代わりに、cURL で証明書を設定し、allow_url_fopen をオンにして、ssl を有効にしました。Var ダンプと出力には、次のメッセージ以外は何も表示されません。

fopen() を使用する場合: タイプ (ストリーム) のリソース (3) リソース ID #3

getBingdata() を使用する場合: bool(false)

これが私の機能です。これの多くは、SO および他の場所のチュートリアルからまとめられました。大きな間違いや脱落がある場合は事前にお詫び申し上げます

function getBingData($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);

    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]); //
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);

    // goes to Bing login page if set to false
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_ENCODING, true);

    if(substr($url,0,4)=='http') { $temp = parse_url($url); }
    else if(substr($url,0,5)=='https') { $temp = parse_url($url); }
    else { $temp = parse_url('https://'.$url); }

    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // 0, 1, and 2 make no difference
    curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "./certificates/ssl.bing.com.cer");
    curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "./certificates/wmstat.bing.com.cer");

    $result = curl_exec($ch);
    $info = curl_getinfo($ch);
    curl_close($ch);
    return ($info['http_code']!=200) ? false : $result;
}

また、curl を介して bing ウェブマスターのログインとパスワードを送信しようとしましたが、違いはありませんでした。Cookie を使用する必要があることはありますか? Bing のログイン プロセスはありますか? https URL から Web データを取得するより良い方法はありますか? それとも、Bing からのすべてを他の用途のためにファイルにダンプする必要があるのでしょうか?

よろしくお願いします!

ps。私はhttps://wmstat.bing.com/webmaster/data.ashx?wmkt=en-CA&wlang=en-CA&type=sitelinks&url=CLIENTURLGOESHERE&out=plainによって与えられた出力を使用しています。これはファイルに設定できることがわかっています(csv形式) またはブラウザから保存します。ただし、SEO 分析のために動的にロードされ、場合によってはデータベースにダンプされる、このすべてまたはさまざまな部分が必要です。これらの生成されたページのコンテンツをファイルに保存してから読み取るのではなく、直接取得できれば、時間と労力を大幅に節約できます。

4

1 に答える 1

0

使用する場合のみ機能します

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

curl のオプション、頑張ってください

于 2013-05-31T03:29:35.570 に答える