扒站wget仿站
其中:
-c, --continue (斷點續傳) 接著下載沒下載完的文件
-r, --recursive(遞歸) specify recursive download.(指定遞歸下載)
-p, --page-requisites(頁面必需元素) get all images, etc. needed to display HTML page.(下載所有的圖片等頁面顯示所需的內容)
-np, --no-parent(不追溯至父級) don't ascend to the parent directory.
-k, --convert-links(轉換鏈接) make links in downloaded HTML point to local files.(將下載的HTML頁面中的鏈接轉換為相對鏈接即本地鏈接)
?
wget -r -p -k -np [網址]
參數說明:
-r : 遞歸下載
-p : 下載所有用于顯示 HTML 頁面的圖片之類的元素
-k : 在轉換文件 X 前先將它備份為 X.orig。
-np: 不追溯至父目錄
$ wget -r -np -nd http://example.com/packages/
這條命令可以下載 http://example.com 網站上 packages 目錄中的所有文件。其中,-np 的作用是不遍歷父目錄,-nd 表示不在本機重新創建目錄結構。
$ wget -m -k (-H) http://www.example.com/
該命令可用來鏡像一個網站,wget 將對鏈接進行轉換。如果網站中的圖像是放在另外的站點,那么可以使用 -H 選項。
?
$ wget -r -np -nd –accept=iso http://example.com/centos-5/i386/
與上一條命令相似,但多加了一個 –accept=iso 選項,這指示 wget 僅下載 i386 目錄中所有擴展名為 iso 的文件。你也可以指定多個擴展名,只需用逗號分隔即可。
$ wget -i filename.txt
此命令常用于批量下載的情形,把所有需要下載文件的地址放到 filename.txt 中,然后 wget 就會自動為你下載所有文件了。
$ wget -c http://example.com/really-big-file.iso
這里所指定的 -c 選項的作用為斷點續傳。
$ wget -m -k (-H) http://www.example.com/
該命令可用來鏡像一個網站,wget 將對鏈接進行轉換。如果網站中的圖像是放在另外的站點,那么可以使用 -H 選項。-l, –level=NUMBER 最大遞歸深度 (inf 或 0 代表無窮)。
最后一條就是用來鏡像一個網站的,簡單有效,速度超快,鏡像下來網站文件結構,代碼都完整無須修改。
?
wget 下載整個網站(扒站)及如何避開 robots.txt 限制下載
腳本如下:
#!/usr/bin/env bash#腳本作用:網站下載 #使用方式:執行腳本,后面跟網站的URL,需要帶 http://xxxx.xxxx.com/set -e#定義站點克隆路徑: WEBDIR='/data/wwwroot'#確定系統有wget [ -z "$(rpm -qa wget)" ] && yum install -y wget#確認下載目錄: [ ! -d ${WEBDIR} ] && mkdir -p ${WEBDIR}#使用斷點續傳的方式下載網站 wget -nc -r -p -k -np -P ${WEBDIR}/ $1# -nc 斷點續傳 # -r, --recursive(遞歸) specify recursive download.(指定遞歸下載) # -k, --convert-links(轉換鏈接) make links in downloaded HTML point to local files.(將下載的HTML頁面中的鏈接轉換為相對鏈接即本地鏈接) # -p, --page-requisites(頁面必需元素) get all images, etc. needed to display HTML page.(下載所有的圖片等頁面顯示所需的內容) # -np, --no-parent(不追溯至父級) don't ascend to the parent directory. #另外 日志 用-o參數或者使用:
#!/usr/bin/env bash#腳本作用:網站下載 #使用方式:執行腳本,后面跟網站的URL,需要帶 http://xxxx.xxxx.com/set -e#定義站點克隆路徑: WEBDIR='/data/wwwroot'#確定系統有wget [ -z "$(rpm -qa wget)" ] && yum install -y wget#確認下載目錄: [ ! -d ${WEBDIR} ] && mkdir -p ${WEBDIR}#使用斷點續傳 的方式下載網站 wget -nc -m -p -k -P ${WEBDIR}/ $1# -nc 斷點續傳 # -m or --mirror開戶鏡像下載 # -p下載所有為了html頁面顯示正常的文件 # -k or --convert-links下載后,轉換成本地的鏈接 # -P ./LOCAL保存所有文件和目錄到本地指定目錄如果有些站點禁止了SEO 收錄,那么有可能下載的只能下載一個robots.txt 文件,此時,我們可以使用 -e 參數,即腳本:
#!/usr/bin/env bash#腳本作用:網站下載 #使用方式:執行腳本,后面跟網站的URL,需要帶 http://xxxx.xxxx.com/set -e#定義站點克隆路徑: WEBDIR='/data/wwwroot'#確定系統有wget [ -z "$(rpm -qa wget)" ] && yum install -y wget#確認下載目錄: [ ! -d ${WEBDIR} ] && mkdir -p ${WEBDIR}#使用斷點續傳及避開robots.txt 的方式下載網站 wget -e robots=off -nc -m -p -k -P ${WEBDIR}/ $1# -nc 斷點續傳 # -m or --mirror開戶鏡像下載 # -p下載所有為了html頁面顯示正常的文件 # -k or --convert-links下載后,轉換成本地的鏈接 # -P ./LOCAL保存所有文件和目錄到本地指定目錄有些網站限制了WGET 訪問,此時我們可以使用參數 -U ,即使用?–user-agent=AGENT 使用 AGENT 取代 Wget/VERSION 作為識別代號:
[root@node12 ~/wwwroot 09:56:15]#wget -e robots=off -nc -m -p -k -U "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36 LBBROWSER" -P ./ www.gcbet8.com?
防止Wget下載整站
找到你站點的Nginx配置文件地址(使用yum,apt-get安裝的Nginx,通常會在/etc/nginx/conf/ 或 /usr/local/nginx/conf/)
添加以下配置:
server?{listen?80;server_name?你的域名.com?www.你的域名.com;rewrite?^(.*)$?http://你的域名.com$1permanent;location?/?{if?($http_user_agent?~*?(wget|ab)?)?{return?403;}if?($http_user_agent?~*?LWP?::?Simple|Wget)?{return?403;} } }亦可設置成 return 444; ? 這樣對方不會收到403錯誤信息,只會像網站緩慢無法鏈接.
保存并重啟Nginx
編輯完保存后,執行
service?nginx?restart????重啟Nginx至此,Nginx配置防扒完成。
?
關于wget使用的一個有趣玩法
很多人玩linux差不都會用wget來下載一些文件來配置或者安裝軟件,當然也有人會用它來遞歸下載的你的網站內容,下面介紹一下如何配置Nginx實現防止別人通過wget下載你的網站內容和如何破解因為Nginx或Apache設置禁止wget或curl。
防止Wget遞歸下載
假設Nginx默認配置文件所在目錄:/usr/local/nginx/conf/vhost
wget的默認User Agent是GNU/Linux,wget,因此我們只需要阻止該UA的訪問并返回403即可。
Nginx配置如下:
if ($http_user_agent ~* (Wget|ab) ) {return 403; }if ($http_user_agent ~* LWP::Simple|BBBike|wget) {return 403; }擴展:
Nginx中有一個獨特的HTTP 444狀態,如果配置return 444,那么對方就不會收到錯誤信息,看起來就像是網站服務器打開緩慢導致無法連接一樣。
破解禁止wget或curl下載
某些網站設置了網站服務器或者iptables的參數禁止wget/curl的訪問,讓我們不能愉快地扒站了怎么辦?其實大部分只是禁止了wget/curl的User Agent,我們只需要給他們設置一個正常的瀏覽器UA即可。
臨時變更wget的UA
在wget前加上參數?-U,代表設置User Aagent
wget www.google.com -U ‘Mozilla/5.0 (Windows NT 10.0; WOW64; rv:43.0) Gecko/20100101永久變更Wget的UA
添加以下代碼到/etc/wgetrc
header = User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0變更curl的UA
使用以下參數:
curl www.google.com --user-agent "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0"同時,curl也可以傳遞refer信息來跳過某些防盜鏈設置:
curl -e http://www.google.com http://www.linpx.com這代表從Google跳轉到我們的網站.
Ok,就這樣···
總結
- 上一篇: 扒站
- 下一篇: 基于Scala版本的TMDB大数据电影分