要求facebook重新抓取URL

时间:2013-05-03 05:09:33

标签: facebook facebook-graph-api

og:网站的图片最近已更改。该网站包含超过100个页面,每个页面包含其各自的og:image。我怎么能要求或强迫facebook重新抓取所有页面,以便图像得到更新?使用facebook调试工具将是太繁琐的任务。在facebook重新搜索网站之前,我将无法为该应用提交收藏。

6 个答案:

答案 0 :(得分:33)

您可以通过API强制重新抓取,如下所述:https://developers.facebook.com/docs/opengraph/using-objects/#update

POST /?id={object-instance-id or object-url}&scrape=true

(但如果你没有受影响网址的真实列表,这有点没有实际意义。那么你只能等到它自动发生,我想。)

答案 1 :(得分:12)

在您的情况下,您有两种选择

  1. 根据ysrb的答案循环使用Open Graph Debugger工具列出您的网址

  2. 耐心等待30天,直到Facebook重新抓取您的文件,如文档here中所述

  3.   

    Facebook为什么以及何时抓住我的网站?

         Facebook需要抓取与Facebook共享的链接,以了解将哪些链接预览信息显示在Facebook.com或Facebook for iOS和Android上。这种情况每30天发生一次,以确保属性是最新的。将URL输入调试器工具时,也会抓取链接页面。

         

    Facebook会在您的网址上观察缓存标头 - 它会按优先顺序查看“过期”和“缓存控制”。但是,即使您指定的时间较长,Facebook也会每30天抓一次页面。

答案 2 :(得分:5)

       $config = array(
            "appId" => 'APP_ID',
            "secret" => 'APP_SECRET');

        $fb = new Facebook($config);
        $r=$fb->api('/','POST',array(
            'id'=>PAGE_URL,
            'scrape'=>'true'
        ));

答案 3 :(得分:3)

请注意,Facebook要求参数通过POST传递。 Facebook只是忽略GET次请求。

以下是C#中的代码。

HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(
    "https://graph.facebook.com/?id="
    + HttpUtility.UrlEncode("http://www.example.com/index.html")
    + "&scrape=true");
httpRequest.Method = "POST";
using (HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse())
{
    using (Stream responsestream = httpResponse.GetResponseStream())
    {
        if (responsestream != null)
        {
            using (StreamReader bodyreader = new StreamReader(responsestream))
            {
                string fbResp = bodyreader.ReadToEnd();
            }
        }
    }
}

答案 4 :(得分:2)

curl --insecure" https://graph.facebook.com/?id=[YOUR-URL-TO-SCRAPE]&scrape=true"

卷曲应该是ssl能力的(因为它是https://graph..。)

答案 5 :(得分:1)

您可以从网址列表中尝试循环,然后执行

curl "http://developers.facebook.com/tools/debug/og/object?q=$url"