2015-09-06 19 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

相關問題