![继续中断的“wget”会话?](https://linux22.com/image/71828/%E7%BB%A7%E7%BB%AD%E4%B8%AD%E6%96%AD%E7%9A%84%E2%80%9Cwget%E2%80%9D%E4%BC%9A%E8%AF%9D%EF%BC%9F.png)
是否可以继续中断的wget
会话 - 例如。通过解析日志文件(使用 -o 或 -a 创建),或者在以某种方式将wget
附加信息存储到磁盘之后(比如它的已解析和待处理链接的列表)?
我知道 -N 选项允许wget
在服务器支持大小和日期列表的情况下从剩下的位置继续,但我下载的网站主要有 PHP 生成的内容,所以我认为 -N 不起作用。
我不希望继续我开始的事情,但如果可能的话,我想在重试之前打开任何有帮助的东西,以防我再次被打断。
+++
我还遇到了一个额外的问题...我收到了很多“ERROR 400: Bad Request”...我认为这意味着我遇到了一些问题也急切,所以服务器阻止了我和/或数据库在一段时间内不堪重负。无论如何,也有可能从中恢复吗?基本上从wget
停止的地方继续(在解析日志或链接列表或其他内容之后),但也会重做遇到问题的页面(例如,在我第一次编辑列表之后)。
答案1
Wget 可以以不同的方式使用,但我假设您使用它来模拟浏览器根据 PHP 内容发出 http(s) 请求。
没有办法让 wget 恢复被中断的会话。 wget 与之交互的 Web 服务器是无状态的,因此没有任何东西可以准确跟踪被中断的会话中发生的情况。您所能做的就是再次提出请求,这当然不会对您有帮助,因为这将是一个新的会话,并且永远不会与以前相同。
当您的 wget 会话中断时,该会话将不复存在。动态生成的内容依赖于该特定会话,并且仅为服务于该会话而生成。当该会话结束时,该会话的动态内容实际上已不复存在。无法以某种方式返回并恢复现已不存在的会话,也无法与现已不存在的仅为服务于该会话而存在的动态内容进行交互。
请记住,Web 服务器是无状态的。您提出一个请求,然后您立即收到针对该特定请求的唯一响应。更复杂的事情(例如会话和动态内容)通过将临时会话 ID 和/或令牌传递到浏览器来承载这些无状态请求。然后,当您的下一个请求到来时,生成动态内容的应用程序或 PHP 脚本会检查该会话 ID/令牌,并以逻辑上适当的方式响应您的浏览器。
即使您可以以某种方式重现浏览器之前拥有的相同会话 ID 和令牌(不要浪费时间尝试),会话 ID/令牌在几秒钟内在服务器端失效的可能性为 99.99999%无论如何,你最后的请求。
这远远超出了您的问题范围,但根据您的浏览器在该服务器上与之交互的确切代码/脚本,可能会传递虚假的会话 ID/令牌,但一般来说,不可能恢复中断的会话会议。在您的情况下,这是根本不可能的,因为您必须在丢失会话之前尝试捕获该会话 ID/令牌,以便尝试重现它。