wget -c -r -p -np -k http://xxx.com/xxx
其中:
-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 作為識别代号:
[[email protected] ~/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,就這樣···