我尝试从用户提供的URL开始递归镜像网页(当然有深度限制设置)。 Wget没有捕获来自css / js的链接,因此我决定使用httrack。
我尝试镜像这样的网站:
# httrack <http://onet.pl> -r6 --ext-depth=6 -O ./a "+*"
本网站使用重定向(301)到http://www.onet.pl:80,httrack 下载index.html页面:
<a HREF="onet.pl/index.html" >Page has moved</a>
仅此而已!我跑的时候:
# httrack <http://www.onet.pl> -r6 --ext-depth=6 -O ./a "+*"
它做我想要的。
有没有办法让重定向后的httrack?目前我只是将“www。”+ url 添加到httrack的网址,但这不是一个真正的解决方案(并未涵盖所有用户案例)。有没有更好的Linux网站镜像工具?
答案 0 :(得分:3)
在主httrack forum上,一位开发人员说这是不可能的。
正确的解决方案是使用其他网络镜像工具。
答案 1 :(得分:1)
您可以使用此脚本首先确定真正的目标网址,然后针对该网址运行httrack:
function getCorrectUrl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
$out = curl_exec($ch);
// line endings is the wonkiest piece of this whole thing
$out = str_replace("\r", "", $out);
// only look at the headers
$headers_end = strpos($out, "\n\n");
if ($headers_end !== false) {
$out = substr($out, 0, $headers_end);
}
$headers = explode("\n", $out);
foreach ($headers as $header) {
if (substr($header, 0, 10) == "Location: ") {
$target = substr($header, 10);
return $target;
}
}
return $url;
}