爬蟲之遇到403 Forbidden,IP被封,怎麼辦?

太陽小諸葛發表於2018-11-11

大資料時代下,資料採集推動著資料分析,資料分析推動發展。但是在這個過程中會出現很多問題。拿最簡單最基礎的爬蟲採集資料為例,過程中就會面臨,IP被封,爬取受限、違法操作等多種問題,當你採集資料最起勁兒的時候,突然網頁跳出403 Forbidden的提示。

所以在爬取資料之前,一定要了解好預爬網站是否涉及違法操作,找到合適的代理IP訪問網站等一系列問題,太陽HTTP服務應運而生。

讓我們先來看一下你所遭遇的403錯誤到底是怎麼回事兒吧!

一、導致403錯誤出現的直接原因

1、你的IP被列入黑名單。

2、你在一定時間內過多地訪問此網站(一般是用採集程式),被防火牆拒絕訪問了。

3、網站域名解析到了空間,但空間未繫結此域名。

4、你的網頁尾本檔案在當前目錄下沒有執行許可權。

5、在不允許寫/建立檔案的目錄中執行了建立/寫檔案操作。

6、以http方式訪問需要ssl連線的網址。

7、瀏覽器不支援SSL 128時訪問SSL 128的連線。

8、在身份驗證的過程中輸入了錯誤的密碼。

9、DNS解析錯誤,手動更改DNS伺服器地址。

10、連線的使用者過多,可以過後再試。

11、伺服器繁忙,同一IP地址傳送請求過多,遭到伺服器智慧遮蔽。

二、403 forbidden出現的邏輯原理

403 Forbidden是HTTP協議中的一個狀態碼(Status Code)。可以簡單的理解為沒有許可權訪問此站。該狀態表示伺服器理解了本次請求但是拒絕執行該任務,該請求不該重發給伺服器。在HTTP請求的方法不是“HEAD”,並且伺服器想讓客戶端知道為什麼沒有許可權的情況下,伺服器應該在返回的資訊中描述拒絕的理由。在伺服器不想提供任何反饋資訊的情況下,伺服器可以用404 Not Found代替403 Forbidden。

三、403錯誤程式碼的分類介紹

403.1 

403.1錯誤是由於”執行”訪問被禁止而造成的,若試圖從目錄中執行CGI、ISAPI或其他可執行程式,但該目錄不允許執行程式時便會出現此種錯誤。 

403.2 

403.2錯誤是由於”讀取”訪問被禁止而造成的。導致此錯誤是由於沒有可用的預設網頁並且沒有對目錄啟用目錄瀏覽,或者要顯示的HTML網頁所駐留的目錄僅標記為”可執行”或”指令碼”許可權。 

403.3 

403.3錯誤是由於”寫入”訪問被禁止而造成的,當試圖將檔案上載到目錄或在目錄中修改檔案,但該目錄不允許”寫”訪問時就會出現此種錯誤。 

403.4 

403.4錯誤是由於要求SSL而造成的,您必須在要檢視的網頁的地址中使用”https”。 

403.5 

403.5錯誤是由於要求使用128位加密演算法的Web瀏覽器而造成的,如果您的瀏覽器不支援128位加密演算法就會出現這個錯誤,您可以連線微軟網站進行瀏覽器升級。 

403.6 

403.6錯誤是由於IP地址被拒絕而造成的。如果伺服器中有不能訪問該站點的IP地址列表,並且您使用的IP地址在該列表中時您就會返回這條錯誤資訊。 

403.7 

403.7錯誤是因為要求客戶證照,當需要訪問的資源要求瀏覽器擁有伺服器能夠識別的安全套接字層(SSL) 客戶證照時會返回此種錯誤。 

403.8 

403.8錯誤是由於禁止站點訪問而造成的,若伺服器中有不能訪問該站點的DNS名稱列表,而您使用的DNS名稱在列表中時就會返回此種資訊。請注意區別403.6與403.8錯誤。 

403.9 

403.9錯誤是由於連線的使用者過多而造成的,由於Web伺服器很忙,因通訊量過多而無法處理請求時便會返回這條錯誤。 

403.10 

403.10錯誤是由於無效配置而導致的錯誤,當您試圖從目錄中執行CGI、ISAPI或其他可執行程式,但該目錄不允許執行程式時便會返回這條錯誤。 

403.11 

403.11錯誤是由於密碼更改而導致無權檢視頁面。 

403.12 

403.12錯誤是由於對映器拒絕訪問而造成的。若要檢視的網頁要求使用有效的客戶證照,而您的客戶證照對映沒有許可權訪問該Web站點時就會返回對映器拒絕訪問的錯誤。 

403.13 

403.13錯誤是由於需要檢視的網頁要求使用有效的客戶證照而使用的客戶證照已經被吊銷,或者無法確定證照是否已吊銷造成的。 

403.14 

403.14錯誤Web 伺服器被配置為不列出此目錄的內容,拒絕目錄列表。 

403.15 

403.15錯誤是由於客戶訪問許可過多而造成的,當伺服器超出其客戶訪問許可限制時會返回此條錯誤。 

403.16 

403.16錯誤是由於客戶證照不可信或者無效而造成的。 

403.17 

403.17錯誤是由於客戶證照已經到期或者尚未生效而造成的。


四、解決403 forbidden錯誤的方法

1、重建dns快取

對於一些常規的403 forbidden錯誤,馬海祥建議大家首先要嘗試的就是重建dns快取,在執行中輸入cmd,然後輸入ipconfig /flushdns即可。如果不行的話,就需要在hosts檔案裡把主頁解析一下了。 

同時,檢視是否在網站虛擬目錄中新增預設文件,一般預設文件為:index.html;index.asp;index.php;index.jsp;default.htm;default.asp等,如下圖所示: 

403 Forbidden錯誤的原因和解決方法-馬海祥部落格

2、修改資料夾安全屬性

用以下命令修改資料夾安全屬性 

chcon -R -t httpd_user_content_t public_html/ 

所用命令解析: 

ls -Z -d public_html/ 

#顯示檔案/目錄的安全語境-Z, –context 

Display security context so it fits on most displays. Displays only mode, user, group, security context and file name.-d, –directory 

list directory entries instead of contents, and do not dereference symbolic links 

chcon -R -t httpd_user_content_t public_html/ 

#修改檔案/目錄的安全語境-R, –recursive 

change files and directories recursively-t, –type 

set type TYPE in the target security context

3、關於apache導致的403 forbidden錯誤的解決辦法

開啟apache的配置檔案httpd.conf,找到這段程式碼: 

Options FollowSymLinks 

AllowOverride None 

Order deny,allow 

Deny from all 

有時候由於配置了php後,這裡的“Deny from all”已經拒絕了一切連線。把該行改成“allow from all”,修改後的程式碼如下,問題解決。 

Options FollowSymLinks 

AllowOverride None 

Order deny,allow 

Allow from all 

之所以會出現錯誤,是因為大多數的國外主機在配置Apache的時候啟用了mod_security,也就是開啟了安全檢查,如果提交的資訊中包含select , % , bin等關鍵字,Apache就會禁止,並給出403,404,500等錯誤。

4、關於HawkHost空間出現403 Forbidden錯誤的解決方法

有的時候在共享伺服器上安裝了Mod security,當網址包含有“%”號等其它敏感字元時,就會被Mod security阻止,馬海祥部落格曾經也出現過此情況。 

解決HawkHost 403 Forbidden 錯誤的方法: 

在.htaccess檔案裡新增如下程式碼: 

SecFilterEngine Off 

SecFilterScanPOST Off 

直接放在網站的根目錄或者程式執行的目錄下。

5、關於WordPress導致的403 Forbidden錯誤解決方法

對於一些使用WordPress管理程式搭建的部落格來說,就需要修改.htaccess檔案,在後面新增上如下內容即可,其實就是disable mod_security 

SecFilterEngine Off 

SecFilterScanPOST Off 

另外dedecms的可能還需要再加一條,以讓預設訪問的是index.html檔案的DirectoryIndex index.html。 

修改.htaccess檔案,將檔案上傳之後,再重新開啟之前出現403 Forbidden的URL就沒有再出現錯誤,直接可以開啟了。 


使用優質的代理ip是能夠有效避免遭遇403forbidden的手段。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31561288/viewspace-2219538/,如需轉載,請註明出處,否則將追究法律責任。

相關文章