我如何强制Facebook重新扫描1000个类似的URL,这些URL只能通过查询字符串进行区分?

时间:2014-09-10 20:52:21

标签: facebook facebook-graph-api

我有一个应用程序鼓励人们通过在Facebook上分享页面来推荐他们的朋友。当他们点击我们的共享链接时,他们实际上是在共享example.com/?ref=REFCODE,其中REFCODE是一个识别它们的唯一字符串。在访问example.com/?ref=REFCODE后,有多少人注册了他们的推荐总数。

og数据是普遍设置的,我想为每个REFCODE更新它。但是,Facebook似乎会为每个重新编码单独存储已删除的数据。

Facebook的调试器只允许我每小时手动重新扫描20个网址。

我尝试在查询字符串的末尾传递一个随机的附加变量,以使Facebook认为它是一个新的URL,但它似乎没有任何效果。 (例如:传递example.com/?ref=REFCODE&f=g而不是原始网址。)

我知道此处找到的方法,但我不确定如何将其同时应用于大量网址:Is there an API to force Facebook to scrape a page again?

有没有好办法呢?

更新:感谢Igy带领我找到一个有效的解决方案,一个简单的shell脚本循环。我也应该提到我将URL传递给Facebook的方式是通过sharer.php。事实证明,随机附加参数技巧并不起作用,因为我没有编码自己的URL,请参阅我刚刚添加的答案以获取有关这两种方法的详细信息。

1 个答案:

答案 0 :(得分:1)

事实证明,至少有两种方法可以做到这一点。

方法一:在bash脚本中循环遍历它们
Igy在评论中提出这一点,它对我有用,这是最普遍的方法。我将所有引用代码放在名为refs.txt的文件中,然后循环遍历所讨论的API端点here。这是我的脚本的样子:

#!/bin/bash
for refcode in $(cat refs.txt); do
    curl -X POST \
     -F "id=http://example.com/?ref="$refcode \
     -F "scrape=true" \
     "https://graph.facebook.com"
    sleep 5
done

方法二:将随机附加的编码参数附加到查询字符串
如上所述,我正在向Facebook传递一个需要一个查询字符串参数的URL,我尝试附加第二个无意义的参数,以便Facebook将其解释为新的URL。这个确实有效。我的错误是我将我的URL作为Facebook的sharer.php的参数传递,但我没有编码自己的URL。我调用的网址如下所示:http://www.facebook.com/sharer.php?u=http://example.com/?ref=REFCODEf&f=g

因此可预测& f = g被解释为sharer.php的参数,而不是example.com的参数。解决方案是对example.com URL进行编码:http://www.facebook.com/sharer.php?u=http%3A%2F%2Fexample.com%2F%3Fref%3DREFCODEf%26f%3Dg

这样& f = g被读作example.com的参数,Facebook将其解释为一个全新的URL。