lua - 用于检索站点的启动脚本返回错误的正文
问题描述
我正在尝试使用 Splash 检索许多不同的 URL。我正在向 /execute 端点发布一个如下所示的脚本:
local request_headers= {
["Accept-Encoding"] = "gzip, deflate, br",
["Accept-Language"] = "en-US,en;q=0.5",
["Cache-Control"] = "max-age=0",
["Upgrade-Insecure_Requests"] = "1",
["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
["User-Agent"] = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36",
["DNT"] = "1",
["Host"] = "www.douban.com"
}
splash:go({
url="https://www.douban.com/people/sophiechou/",
headers = request_headers
})
return { ok=true, html=splash:html(), info=splash:har() }
HAR 必须返回到 Splash 服务器和最终目的地之间接收到的真实标头。
所以,问题是我收到的 HTML 很可能是 gzip 压缩的。正如我从 Splash 中了解到的那样,当我返回哈希时,它会自动对其进行 JSON 编码...... JSON 对二进制 gzip 进行编码,这实际上将其全部变成了垃圾。
有时网站会返回 HTML。有时,他们会返回 Gzip 或 Defalte 或 BR。
为什么我不只是使用“身份”?我们发现的许多网站对身份的响应都不是很好,要么根本不响应,要么返回 Forbidden。更改编码既减少了浏览器占用空间的唯一性,也减少了随机问题的数量。
除了我们无法阅读该页面。
似乎我们需要通过某种treat.as_binary(x) 或其他方式检测并处理二进制文件(如果存在)。但是文档对如何执行此操作非常了解。
这让我困扰了好几个星期。帮助!有什么想法吗?
Ps 链接到通过 Splash Jupyter 笔记本返回的 html 的外观。 关联
解决方案
推荐阅读
- opengl - 停止 LibGDX 渲染对象内部的面
- ios - 在 UIControl 上添加多个目标操作的更有效方法
- python - 如何在 NetowrkX Graph 中更改边缘线的大小
- sql - Postgresql数组包含条目数量?
- c - Linux 内核如何知道将输入事件写入哪个文件描述符?
- c# - 如何提高搜索性能
- c++ - 迭代所有可能的浮点值,从最低开始
- php - 为什么 DateTimeZone 的 getOffset() 需要一个参数?
- ios - NSScrollView (NSTouchBar) 中的 NSPopoverTouchBarItems
- gradle - gradle & maven-publish:“来自”是什么意思?