Scraper 在处理超过 ~390KB 的文件时失败

2024-01-02

Facebook 的 URL 抓取工具有大小限制吗?我们的网站上有几本书可供下载。那些 HMTL 文件大小低于特定大小 (~390KB) 的文件会被抓取并正确读取,但 4 个较大的文件则不会。这些较大的项目会收到 200 响应代码并打开规范 URL。

所有这些页面都是使用相同的模板构建的,唯一的区别是每本书内容的大小以及每本书与网站上其他页面的链接数量。

  1. 单击规范 URL
  2. 在 Firefox 中打开 Firebug 或 Chrome 中的开发者工具到网络选项卡 3, *.html 大小为 >~390KB(对于列出的失败)和
  3. 点击“准确查看我们的抓取工具在您的网址中看到的内容”
  4. 失败时显示空白页,成功时显示 HTML

失败:

  • https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Frcg.org%2Fbooks%2Ftapom.html https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Frcg.org%2Fbooks%2Ftapom.html
  • https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Frcg.org%2Fbooks%2Ftbgpu.html https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Frcg.org%2Fbooks%2Ftbgpu.html
  • https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Frcg.org%2Fbooks%2Fttjc.html https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Frcg.org%2Fbooks%2Fttjc.html
  • https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Frcg.org%2Fbooks%2Ftbdse.html https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Frcg.org%2Fbooks%2Ftbdse.html

成功案例:

  • https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Frcg.org%2Fbooks%2Fthogtc.html https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Frcg.org%2Fbooks%2Fthogtc.html
  • https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Frcg.org%2Fbooks%2Faabibp.html https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Frcg.org%2Fbooks%2Faabibp.html
  • https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Frcg.org%2Fbooks%2Ftww.html https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Frcg.org%2Fbooks%2Ftww.html
  • https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Frcg.org%2Fbooks%2Ftsosw.html https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Frcg.org%2Fbooks%2Ftsosw.html
  • https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Frcg.org%2Fbooks%2Fsyottc.html https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Frcg.org%2Fbooks%2Fsyottc.html
  • https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Frcg.org%2Fbooks%2Fttigtio.html https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Frcg.org%2Fbooks%2Fttigtio.html
  • https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Frcg.org%2Fbooks%2Faadac.html https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Frcg.org%2Fbooks%2Faadac.html
  • https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Frcg.org%2Fbooks%2Fsiud.html https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Frcg.org%2Fbooks%2Fsiud.html
  • https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Frcg.org%2Fbooks%2Ftuyc.html https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Frcg.org%2Fbooks%2Ftuyc.html

解决您的问题的方法可能是检查是否是真实用户或 Facebook 机器人正在访问您的页面。如果是机器人,则仅为其渲染必要的元数据。您可以通过其用户代理检测机器人,根据Facebook 文档 https://developers.facebook.com/docs/reference/plugins/like/ is:
"facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"

代码看起来像这样(在 PHP 中):

function userAgentIsFacebookBot() {
    if ($_SERVER['HTTP_USER_AGENT'] == "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)") {
        return true;
    }
    return false;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scraper 在处理超过 ~390KB 的文件时失败 的相关文章

随机推荐

  • 通过 FIFO 重定向 stdin

    我正在 GNU Linux 下运行一个服务器应用程序 用 Java 编写 它接收输入 我猜是来自标准输入 并解释它以运行一些命令 我不想在终端窗口内运行应用程序 我想运行守护程序 但我仍然希望能够随时输入命令 我想我也许可以使用 fifos
  • 使用相同的标记和偏移位访问和更新 2 路关联缓存

    我对如何在双向关联缓存上访问数据感到困惑 例如 C ABS C 32KB A 2 B 32bits S 256 offset lg B 5 index lg S 8 tag 32 offset index 19 假设我有以下地址 tag i
  • 如何根据关系获取一条记录的多条记录?

    我有两个表组织和员工具有一对多关系 即一个组织可以有多名员工 现在我想选择特定组织的所有信息以及该组织所有员工的名字 最好的方法是什么 我可以在单个记录集中获取所有这些内容吗 或者我将不得不根据否获取多行 员工人数 这是我想要的一些图形演示
  • 使用 24 小时制数据创建圆形图的方法是什么?

    我正在尝试使用围绕中心点绘制的一组数据的方式创建一个圆形图 我在网上找到的代码可以做到这一点 但是 Y 轴太大 以至于图形没有用 我想将 Y 轴限制为 95 120 但当我使用Y scale continuous limit c 95 12
  • 在 Ember.js 应用程序中显示在线和离线(例如飞机)模式

    Ember 应用程序可以了解网络状态吗 如果是 如果应用程序可以访问互联网 我如何获取信息 我想根据网络可访问性切换 GUI 元素 索引 html app js App Ember Application create
  • ASP.NET Core 流式传输 - 将块写入请求

    这是更新的问题 我的代码中曾经存在错误 我希望能够将数据块发送给客户端 任何事情都会受到赞赏 有没有办法为 ASP NET Core 提供对数据流传输方式的更多控制 我担心下面的代码如何扩展 有人可以建议如何通过 asp net core
  • 内部测试人员如何下载“Android”预发布的App版本?

    有人可以告诉我 内部测试人员如何下载 Android 预发布的应用程序版本吗 因为现在 TestFlight 仅适用于苹果收购的iOS 解决方案是否是将 Android 预发布应用程序上传到 Google Play 并邀请内部测试人员下载
  • 尝试使用 jQuery 模式弹出窗口通过 iframe 查看 pdf 文件

    我正在尝试使用 jQuery 模式弹出窗口通过 iframe 显示 pdf 文件 但是 它要求用户在页面加载时下载该文件 而不是在模式对话框打开时将 pdf 文件嵌入到 iframe 中 我该如何解决这个问题 我使用 MVC 输出 pdf
  • Android System.err 突然出现

    运行我的应用程序时 LogCat 突然显示一系列橙色消息 警告 这些消息似乎与我的应用程序完全无关 当然not具有相同的 pid 05 01 12 00 03 732 WARN System err 1836 java io FileNot
  • 在R中读取csv文件,其中货币列为数字

    我正在尝试读入 R 一个包含政治捐款信息的 csv 文件 据我了解 默认情况下 列会作为因子导入 但我需要将金额列 数据集中的 CTRIB AMT 作为数字列导入 这样我就可以运行各种不适用于的函数因素 该列的格式为带有 作为前缀的货币 我
  • 使用反引号时转义空格

    我进行了搜索 从我的角度来看 使用反引号是解决这个问题的唯一方法 我正在尝试致电mdlsPerl 命令为目录中的每个文件查找其上次访问时间 我遇到的问题是在我的文件名中find我有 bash 显然不喜欢的未转义空间 有没有一种简单的方法可以
  • 警告:mysql_real_escape_string() 期望参数 1 为字符串

    HTML代码 tr td td tr
  • Swift - 设置圆角以注释视图图像

    这是我之前的线程 我将图像设置为注释视图引脚 Swift 设置从数组到注释引脚的不同图像 https stackoverflow com questions 28033159 swift setting different images f
  • 使用 TorchText (PyTorch) 进行语言翻译

    我最近开始使用 PyTorch 进行 ML DL 下面的 pytorch 示例解释了我们如何训练一个简单的模型来将德语翻译成英语 https pytorch org tutorials beginner torchtext translat
  • 如何从 Access 数据库显示/检索或获取图像到 PictureBox?

    Private Sub UpdatePicture Dim str As String str Provider Microsoft ACE OLEDB 12 0 Data Source UsersDB accdb cn New OleDb
  • VBA XML 选择命名空间问题

    所以我确信这是可以解决的 但只是我通常不需要在 VBA XML 代码中处理 XML 命名空间 所以 我们有一个文件 它实际上是一个 SVG 文件 名为Flag of the United Kingdom svg这是文件内容
  • 为什么 MySQL 在 JOIN 加 ORDER 时不使用主键?

    这是给你的一个简洁的 显然是 MySQL Setting things up DROP DATABASE IF EXISTS index test gutza CREATE DATABASE index test gutza USE ind
  • 使用 Flask Jinja2 和 WTForms 隐藏表单组

    我试图根据表单另一部分中复选框的状态显示或隐藏表单字段 我认为我可以使用 jQuery show 或 hide 相对轻松地完成此操作 但到目前为止我运气不佳 有什么想法吗 表格类 class MyForm Form checked Bool
  • 谁能为开发人员推荐一个好的备份“系统”? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在办公室里被称为 后备人员 作为一名开发人员 我经常在项目之间来回跳转 因此 当我返回每个项目时 我并不总是准确地记得每个项目中存在哪些
  • Scraper 在处理超过 ~390KB 的文件时失败

    Facebook 的 URL 抓取工具有大小限制吗 我们的网站上有几本书可供下载 那些 HMTL 文件大小低于特定大小 390KB 的文件会被抓取并正确读取 但 4 个较大的文件则不会 这些较大的项目会收到 200 响应代码并打开规范 UR