我有一个应用程序鼓励人们通过在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,请参阅我刚刚添加的答案以获取有关这两种方法的详细信息。
答案 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。