Facebook-解析输入URL时出错,没有缓存任何数据,或者没有刮取任何数据


Facebook - Error parsing input URL, no data was cached, or no data was scraped

经过研究,我发现很多人都面临着同样的问题。但到目前为止,我还没有解决方案,这是在我将服务器切换到linode.com 之后发生的

让我们举一个例子。www.acemark2u.com是linode服务器下托管的网站之一,当我尝试在中调试时https://developers.facebook.com/tools/debug/og/object/,它就是无法正确获取抓取信息,如果我尝试使用其中一个页面www.acemark2u.com/about-us,它只会向我显示错误"解析输入URL时出错,没有缓存数据,或者没有抓取数据。"

奇怪的事情发生了。当我尝试使用ip地址106.187.35.114/~acemark2进行调试时,一切都很顺利。抓取很好,页面没有错误404。

我怀疑这可能是由"gethostbyaddr"函数引起的(参考:http://www.gearhack.com/Forums/DisplayComments.php?file=Computer/Network/Internet/Preventing_Your_Web_Server_From_Blocking_Facebook_Share)但到目前为止,我还没有解决方案。

对于遇到相同问题但原因不同的人,我发现了一些有趣的事情,比如Facebook如何"抓取"页面,在进行一些测试的同时检查服务器的日志。

首先:如果你从未尝试过与FB共享页面,FB也从未尝试过抓取页面,如果你只将url放在调试工具中,它也不会尝试这样做。这是你得到错误的第一个原因:它只是说FB在页面上没有信息,你必须"强迫"它刮取页面。

当你第一次尝试共享页面时,FB会抓取它(询问你的服务器页面的前40k并分析opengraph标签)。可能发生的情况是,你看不到图片:Facebook共享对话框不显示缩略图第一次加载

原因是FB在幕后仍然在抓取你的页面并缓存图像。下一次,事实上,你也有图像。如何解决?预缓存:https://developers.facebook.com/docs/sharing/best-practices#precaching

或者简单地添加

<meta property="og:image:width" content="450"/>
<meta property="og:image:height" content="298"/>

我终于找到了解决方案。

在我默认的DNS A/AAAA记录中,我没有删除这几个ip

2400:8900::f03c:91ff:fe73:a95d  Default
mail    2400:8900::f03c:91ff:fe73:a95d  Default
www 2400:8900::f03c:91ff:fe73:a95d  Default

这就是为什么一些用户在通过适当的网址访问时会指向上面的IP。

这个问题已经接受了答案,但如果这个答案对任何人都不起作用,这里就是对我起作用的地方。

我在og:url中提供的URL是受保护的URL,即只有那些登录的用户才能查看URL指向的页面。当我更改URL以指向我的主页时,登录或注销用户都可以查看该主页,即。http://www.ercafe.com一切都很顺利。

我们在一个网站上遇到了类似的问题。

我们通过禁用apachemod_security来解决这个问题,同时使用facebook对象调试工具来"获取新的刮取信息"

对我来说,解决方案是替换DNS A记录

example.sk  3600    1.2.3.4
www.example.sk  3600    1.2.3.4

example.sk  3600    1.2.3.4
*.example.sk    3600    1.2.3.4