使用PHP和curl或fopen获取Bing网站管理员统计数据

使用PHP和curl或fopen获取Bing网站管理员统计数据,php,curl,certificate,fopen,bing,Php,Curl,Certificate,Fopen,Bing,我正在尝试加载Bing网站管理员工具生成的统计数据。我正在基于所需数据构建URL,并尝试加载该URL。由于file_get_contents()不适用于https,因此我尝试了基于curl的函数和fopen 这是可能的,还是Bing以某种方式阻止了远程访问该数据流?我知道谷歌有一个登录过程,但我没有发现Bing有这样的功能。相反,我用cURL设置了一个证书,启用了allow\u url\u fopen,并启用了ssl。Var转储和打印只提供以下消息: 使用fopen()时: 类型(流)的资源(3

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

这是可能的,还是Bing以某种方式阻止了远程访问该数据流?我知道谷歌有一个登录过程,但我没有发现Bing有这样的功能。相反,我用cURL设置了一个证书,启用了allow\u url\u fopen,并启用了ssl。Var转储和打印只提供以下消息:

使用fopen()时: 类型(流)的资源(3) 资源id#3

使用getBingdata()时: 布尔(假)

这是我的功能。其中大部分是从某某和其他地方的教程中拼凑而成的。我为任何重大错误或遗漏提前道歉

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站长登录名和密码,但发现没什么不同。我需要做些饼干吗?Bing是否有登录过程?有没有更好的方法从https URL获取web数据?或者Bing中的所有内容都必须转储到文件中以供其他用途

非常感谢

另外,我使用的是由给出的输出,我知道可以将其设置为文件(csv格式)或从浏览器中保存。但是,我需要动态加载所有或各个部分以进行SEO分析,并可能转储到数据库中。如果我可以直接获取这些生成页面的内容,而不是将它们保存到文件中,然后再读取这些内容,这将节省大量的时间和精力。

如果只使用它,它会工作

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


curl选项,祝你好运

“Bing有登录过程吗?”当我点击你的示例链接时,我得到了一个,所以符号指向是。是的,有。我在通过同一浏览器登录时运行脚本。我还转储了证书,并通过curl指向它。不过,这在这一点上似乎没有什么区别,这让我认为存在cookie依赖性(或者Bing的人不喜欢以这种方式提取数据)。嗯,登录浏览器与PHP无关。它们是完全分开的。该死,甚至Safari和Firefox使用完全不同的cookie。您需要编写登录过程的脚本,处理cURL中的cookies以备将来的请求,等等,这就是我的问题的根源。Bing似乎根本不支持脚本登录,我也没有找到任何与Google的网站管理员工具登录相类似的东西——而且我的PHP技能一般,我不知道如何创建类似的过程。当然,他们不支持脚本登录。他们想让你用。