如何使用经过验证的用户名和密码离线下载网站?

如何使用经过验证的用户名和密码离线下载网站?

我有这个教程网站的账户testdriven.io,并且我希望离线下载教程,以便我的团队成员可以学习,而无需登录凭证。

因此,我尝试了几种方法,但都没有成功。

首先我登录账号,然后开始下载wget -r --mirror -p --convert-links -P . https://testdriven.io/courses/。但是,下载的页面是离线的,没有登录账号,教程也受到限制。

其次,我尝试将参数字符串传递如下

wget --save-cookies cookies.txt \
     --keep-session-cookies \
     --post-data '[email protected]&password=z9vi2gE82lO@sTN' \
     --delete-after \
     https://testdriven.io/courses/

然而,它又回来了

--2019-12-18 02:01:22--  https://testdriven.io/courses/
Resolving testdriven.io (testdriven.io)... 104.27.143.239, 104.27.142.239, 2606:4700:30::681b:8eef, ...
Connecting to testdriven.io (testdriven.io)|104.27.143.239|:443... connected.
HTTP request sent, awaiting response... 403 Forbidden
2019-12-18 02:01:23 ERROR 403: Forbidden.

因此,我如何才能通过提供经过验证的用户名和密码来下载完整的离线教程?谢谢。

答案1

该网站将会把您的授权信息存储在 cookie 中。

您可以在浏览器的网络检查器中找到它。查看请求标头并获取用于 wget 的 cookie。

网络检查器

您需要将 cookie 传递到wget,并且理论上使用--save-cookies和维护一个 cookie 罐--load-cookies

例如:

wget -r --mirror -p --convert-links -P . \
  --header="Cookie: __cfduid=ddebc00435655a6a20430c65436f729851576611229; csrftoken=6QuufXScgoQkyEe18dAL9YmqhxlyJpegNtyMCr4LgAUuvBs3KUzQwqEYBvWZV4yg; sessionid=c5gbfxkhqwpblxlhatgfh3wtfgy0zgpp" \
  --save-cookies cookies.txt \
  --load-cookies cookies.txt \
  --accept-regex '/courses/' \
  https://testdriven.io/courses/auth-flask-react/

答案2

阅读man wget,特别是以下部分:

 --user=user
 --password=password
     Specify the username user and password password for both FTP and HTTP file retrieval.  These parameters can be
     overridden using the --ftp-user and --ftp-password options for FTP connections and the --http-user and --http-password
     options for HTTP connections.

阅读所有wget选项。这会有帮助吗?:

--metalink-over-http
     Issues HTTP HEAD request instead of GET and extracts Metalink metadata from response headers. Then it switches to
     Metalink download.  If no valid Metalink metadata is found, it falls back to ordinary HTTP download.

相关内容