2015-09-06 22 views
4

我最近从HTTP网站迁移到HTTPS。为了使用mnogosearch搜索引擎对本网站的所有页面进行索引,我需要执行一个包含在mnogosearch中的脚本,称为“索引器”,它实际获取网页的所有页面并将它们索引到MySQL表格中。wget从专用服务器的HTTPS网站

此“索引器”脚本必须从托管HTTP服务器的计算机调用,即从虚拟专用服务器(VPS)调用。

此脚本与我的网站的HTTP版本很好地工作,但我有问题与HTTPS索引。

事实上,能够索引的HTTPS网页,我用"virtual scheme as an external retrieval system"从这个链接:http://www.mnogosearch.org/doc/msearch-extended-indexing.html][1]

它允许使用外部程序来获取HTTPS页面的内容。

它可以把外部程序到一个名为"curl.sh"脚本:

#!/bin/sh 
wget -r --no-check-certificate $1 

的问题是从我的本地机器这个“wget -r --no-check-certificate https://example.com/”命令作品(它下载我的网站“example.com”的所有页面)但直接从我的HTPSPS服务器托管的VPS启动它时(例如example.com),它不起作用。

在第二种情况下,它只下载index.html。

这里就是我得到的,当我做托管的机器上递归的wget:

$ wget -r --no-check-certificate https://example.com/ 
--2015-09-06 22:22:12-- https://example.com/ 
Résolution de example.com (example.com)... 
Connexion vers example.com (example.com)...connecté. 
Le propriétaire du certificat ne concorde pas avec le nom de l'hôte «example.com» 
requête HTTP transmise, en attente de la réponse...200 OK 
Longueur: 177 [text/html]a 
Sauvegarde en : «example.com/index.html» 

100%[========================================================================================================================================>] 177   --.-K/s ds 0s  

2015-09-06 22:22:12 (5,08 MB/s) - «example.com/index.html» sauvegardé [177/177] 

FINISHED --2015-09-06 22:22:12-- 
Total wall clock time: 0,5s 
Downloaded: 1 files, 177 in 0s (5,08 MB/s) 

和index.html的是无效的,下面是它的内容:

<html><body><h1>It works!</h1> 
<p>This is the default web page for this server.</p> 
<p>The web server software is running but no content has been added, yet.</p> 
</body></html> 

我让你发现我的HTTPS服务器可以在8443端口上访问(我做了一个将HTTPS 443请求重定向到8443端口的重写规则)。

所以我也试过:

wget -r --no-check-certificate https://example.com:8443/ 

在这种情况下,wget的尝试显然是为了获取所有的网页,但我有一个404 eror来回每一页:

$ wget -r --no-check-certificate https://example.com:8443/ 
--2015-09-06 22:39:03-- https://example.com:8443/ 
Résolution de example.com (example.com)... 
Connexion vers example.com (example.com)||:8443...connecté. 
requête HTTP transmise, en attente de la réponse...303 See Other 
Emplacement: index.html [suivant] 
--2015-09-06 22:39:04-- https://example.com:8443/index.html 
Réutilisation de la connexion existante vers example.com:8443. 
requête HTTP transmise, en attente de la réponse...200 OK 
Longueur: 7389 (7,2K) [text/html] 
Sauvegarde en : «example.com:8443/index.html» 

100%[========================================================================================================================================>] 7 389  --.-K/s ds 0s  

2015-09-06 22:39:04 (145 MB/s) - «example.com:8443/index.html» sauvegardé [7389/7389] 

Chargement de robots.txt; svp ignorer les erreurs. 
--2015-09-06 22:39:04-- https://example.com:8443/robots.txt 
Réutilisation de la connexion existante vers example.com:8443. 
requête HTTP transmise, en attente de la réponse...200 OK 
Longueur: 138 [text/plain] 
Sauvegarde en : «example.com:8443/robots.txt» 

100%[========================================================================================================================================>] 138   --.-K/s 

更新:我有忘了说,我有一个Twisted python服务器在Apache后面,这个Twisted服务器正在监听端口8443,这就是为什么我已经完成了从443到8443端口的重定向

回答

1

如果您有权访问服务器,最简单的解决方案可能是更改您的Apache配置,以便端口443与端口8443进入相同的主机/虚拟主机。然后,如果您尝试再次在服务器上下载https://example.com/,您使用https://example.com/的绝对链接也可以正常工作,并且您可以通过普通端口下载所有内容。

更进一步的道路上,我想你可能想要放弃-r标志并将-S -O -添加到你的wget命令行中。它看起来像你使用的软件期望服务器响应的标题和主体在控制台上输出,而不是保存到文件。

+0

通过更改Apache配置,使端口443与端口8443具有相同的主机/虚拟主机,您是什么意思?我已经有了下面的重写规则:RewriteRule^/(。*)https://example.com/$1 [R = 301,L]和下面的iptables规则:-A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT - 对端口8443。我能做些什么? – youpilat13

+0

首先,当你在同一台机器上时,iptables规则不会对你有所帮助,它只适用于来自其他客户端的传入流量。 ([source](http://askubuntu.com/a/595955/435294))因此,当您在服务器上运行wget时,它会通过端口443连接到Apache,从而跳过iptables规则。 “真实”网站目前仅设置为在端口8443上进行响应。如果您更改指令来处理端口443和8443,则可以解决此问题。 另一种解决方案:看到上面链接的iptables帖子,你可以添加另一个iptables规则到OUTPUT链来重定向本地端口 – dncook

+0

谢谢,它适用于OUTPUT链! – youpilat13

相关问题