我正在尝试抓取我拥有的一个旧的 Reviewboard 服务器,以便我可以创建一个静态副本并存档它,并且我根据一些人的建议使用 wget 来执行此操作,使用推荐的方式抓取和下载服务器,如下所示:
wget --recursive --no-clobber --page-requisites --html-extension --convert-links --domains $DOMAIN --http-user $USERNAME --ask-password $THE_SERVER
但是,服务器需要 LDAP 身份验证登录,因此我得到的只是登录页面和一些相关文件。如果我直接执行--user
而不是 ,也会出现同样的问题--http-user
。
我的问题是,我可以使用 wget 进行 LDAP 身份验证吗?如果可以,该怎么做?
因为我确信会出现这些评论:
- 我已经使用 rb-tools 创建了一个 JSON 档案,但更倾向于使用静态网络副本。
- 我可以选择允许匿名只读访问,因为我是服务器的管理员,但如果可能的话,我想避免这种情况。
答案1
LDAP 不是身份验证机制– 这仅仅是一个帐户贮存后端;它本质上与在 MySQL 或类似系统中存储帐户相同。因此,就 HTTP 客户端而言,不存在“LDAP 身份验证”之类的东西。
HTTP 的实际机制有对于基于密码的登录,为“基本”或“摘要”,对于基于 Kerberos 的登录,为“协商”;--http-user
如果您的网站使用其中之一,则该选项会起作用。
但是,您的网站很可能使用基于表单/cookie 的登录页面,对于 HTTP 客户端来说,这与常规重定向到常规网页完全没有区别。Wget将不会能够自动识别并填写这些表格。
如果是这样的话,你可以要做的就是通过常规 Web 浏览器登录,然后将必要的会话 cookie 复制到 wget 的“cookie jar”文件中(或者可以使用 直接传递它们--header
)。然后网站就会识别出您已登录。
如果您在 Chrome 或 Firefox 中打开“开发者工具”→“网络”,则每个网络请求都会有一个“复制为 cURL”选项,该选项会为您提供完整的curl
命令行。找到发送会话 cookie 的特定--header …
选项,并将其提供给 wget。