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,就这样···