0

我正在尝试加载 Bing 网站管理员工具生成的统计数据。我正在根据所需数据构建 url 并尝试加载它。由于 file_get_contents() 不适用于 https,因此我尝试了基于 curl 的函数和 fopen。

这是否可能,或者 Bing 是否以某种方式阻止了该数据流被远程访问?我知道谷歌有一个登录过程,但我没有发现 Bing 有这样的东西。相反,我使用 cURL 设置了证书,打开了 allow_url_fopen,并启用了 ssl。除了以下消息之外,Var 转储和打印什么都没有给我:

使用 fopen() 时:resource(3) of type (stream) Resource 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 中的所有内容都转储到文件中以供其他用途?

提前谢谢了!

附言。我正在使用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);

卷曲的选择,祝你好运

于 2013-05-31T03:29:35.570 回答