wget指令筆記


基本使用
wget {url}   # 抓取指定url,檔名自動產生成url最後檔案含參數,例如 http://www.test.idv/abc?xxx123=abs,會輸出成abc?xxx123=abs的檔案
wget  -O {output name}{url}  # 指定抓取檔案的輸出名稱
wget -q {url} # 安靜模式--quit,不會顯示抓取的狀態與進度
wget -d {url} # debug模式, 會顯示request和response
wget -S {url} #顯示server response的訊息
wget -o {output name} {url}  # 將wget的抓取資訊輸出到指定檔案
wget -c {url} # 續傳功能, 如果server沒支援也無法續傳
wget --no-proxy {url} #不透過proxy抓取檔案

重新嘗試機制
wget -t=10 --retry-connrefused --waitretry={wait sec time} {url} #等待數秒後的時間再抓取,嘗試最多10次
wget -T={sec for timeout} {url} #設定所有類型的timeout時間
wget --dns-timeout={sec} --connect-timeout={sec} --read-timeout={sec} {url} #分別設置各種timeout時間

特殊用途
wget --user-agent={agent-string} {url} #設定user-agent的字串內容, 短option是-U
wget --referer={refer-url} {url}
wget --post-data={data-string} {url}
wget --post-file={file path} {url}  #和post-data只能2取1
wget --method={HTTP-method} {url}
wget --header={header-string} {url}
wget --secure-protocol={secure method} {url} # auto, SSLv2, SSLv3, TLSv1
wget --no=cookies {url} # 不使用cookies
wget --limit-rate={bitrate} {url} # 限制下載速度 example: 2.5k, 2.5M

帳號密碼相關
wget --user={username} {url}
wget --password={password} {url}
wget --http-user={username} {url}
wget --http-password={password} {url}
wget --ftp-user={user name} {url}
wget --ftp-password={password} {url}


砍站
wget http://example.com \
 --domains example.com \
 --recursive \
 --page-requisites \
 --no-clobber \
 --html-extension \
 --convert-links
domains是避免跑去其他部相關的網站下載內容
recursive的短Option是-r
no-clobber是指如果檔案已經存在不要覆蓋他
另外可能會需要加上--level=0, 來指定無限層次的抓取

檢測是否存在連結
wget --spider --force-html -i bookmarks.html
--spider不會抓取內容到本機, force-html是不

具有CDN機制的網頁抓取

用nslookup {Domain name}可以查詢到多個IP組

通常CDN會限制存取, 所以直接透過IP連線會被檔,可能會需要在HTTP HEADER上加入HOST與REFERER
wget --header="Host: {Domain name}" http://{IP}/some/url

Reference
https://www.gnu.org/software/wget/manual/wget.html
http://www.ewdna.com/2012/04/curl_18.html

留言