我試圖加載由Bing網站管理員工具生成的統計數據。我正在根據所需的數據構建網址並嘗試加載該網址。由於file_get_contents()不適用於https,我已經嘗試了基於curl的函數和fopen。使用PHP和curl或fopen獲取Bing站長統計信息
這是否可能,或者Bing以某種方式阻止這個數據流被遠程訪問?我知道Google有一個登錄過程,但我沒有發現Bing的這種東西。相反,我用cURL設置了一個證書,打開了allow_url_fopen,並啓用了ssl。瓦爾轉儲和打印給我什麼,除了以下消息:
當使用fopen()函數: 資源(3)式的(流) 資源ID#3使用getBingdata時
(): 布爾(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;
}
我也試圖通過捲曲送我冰網站管理員登錄名和密碼,卻發現它並沒有區別。我需要用cookies來做些什麼嗎?是否有Bing的登錄過程?是否有更好的方法從https網址獲取網絡數據?或者,Bing的所有內容都必須被轉儲到其他用途的文件中?
非常感謝提前!
ps。我使用https://wmstat.bing.com/webmaster/data.ashx?wmkt=en-CA&wlang=en-CA&type=sitelinks&url=CLIENTURLGOESHERE&out=plain給出的輸出,我知道它可以設置爲文件(csv格式)或從瀏覽器保存。不過,我需要動態加載的所有或各種部分進行SEO分析,並可能轉儲到數據庫。如果我可以直接獲取這些生成的頁面的內容,而不是將它們保存到文件中,然後再讀取它們,這將節省大量時間和精力。
「是否有Bing的登錄過程?」當我點擊你的示例鏈接時,我得到一個,所以標誌指向是。 – ceejayoz
是的,有。我在通過同一瀏覽器登錄時運行腳本。 我也拋棄了證書,並通過捲曲指向它。不過,這一點似乎沒有什麼區別,這導致我認爲存在Cookie依賴性(或Bing的人不喜歡以這種方式提取數據)。 – John
呃,在您的瀏覽器上登錄有**沒有任何**與PHP。他們完全和完全分離。地獄,即使Safari與Firefox使用完全不同的cookie。你需要編寫登錄程序的腳本,處理cURL中的cookies以備將來的請求等。 – ceejayoz