文档章节

扒站wget仿站

临江仙卜算子
 临江仙卜算子
发布于 01/20 16:33
字数 1853
阅读 26
收藏 0
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 作为识别代号:

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

© 著作权归作者所有

共有 人打赏支持
临江仙卜算子
粉丝 20
博文 345
码字总数 258597
作品 0
郑州
CEO
私信 提问
扒站仿站我怎么觉得telport不怎么行啊,还是另存为靠谱些,你们觉得呢?

扒站仿站我怎么觉得telport不怎么行啊,还是另存为靠谱些,你们觉得呢?

超爱代码语言
2018/04/30
0
0
扒站后,JQuery链接起了,但没有动态效果,是不是扒站后jQuery文件有问题?

扒站后,JQuery链接起了,但没有动态效果,是不是扒站后jQuery文件有问题? 昨天有个网友提示我扒站后,jquery有些半角符号变成全角符号,怎么能快捷找到问题? 还有扒站后jQuery还有其他问题...

超爱代码语言
2017/10/20
51
2
极速仿站流程

在没有强大的前端设计和切片的情况下,要做出一个效果还可以的前端,其实是一件非常吃力不讨好的事情。因为网站的策划,设计,前端全部压在一个人身上的时候,会让整个网站的搭建分工效率变的...

熊猫88
2016/01/08
162
0
roundcube模板仿制

做roundcube的模板,仿一个界面。 roundcube是什么?请不知道的百度科普一下,roundcube内置有两个模板,个人觉得都不咋滴。所以想仿一个。 目标站:http://mail.sunyo6688.com 账号:sunyo...

kbg
2017/03/17
1
0
西瓜仿站高手v1.08官方正式版

西瓜仿站高手是一款绿色好用的由追风网络出品的网站模板批量下载软件,西瓜仿站高手是一款仿站工具,仿站神器。软件功能强大,能够帮你轻松帮你下载任意网站、任意模板,并且速度偶非常迅速使...

相心的泪
2016/08/30
5
0

没有更多内容

加载失败,请刷新页面

加载更多

数据库连接池参数参考

<!--acquireIncrement:链接用完了自动增量3个。 --> <property name="acquireIncrement">3</property> <!--acquireRetryAttempts:链接失败后重新试30次。--> <property ......

MrPei
31分钟前
1
0
配置crontab定时多任务爬虫

1、crontab 学习文档:https://www.cnblogs.com/clphp/p/6801608.html 2、编辑命令:crontab -e 30 1 * * * cd /data/XXX/XXX/commands && /bin/sh running.sh >/dev/null & #每天一点半,定......

Liens
33分钟前
1
0
python编程使用协程并发的优缺点

python编程使用协程并发的优缺点 协程 协程是一种用户态的轻量级线程,又称微线程。 协程拥有自己的寄存器上下文和栈,调度切换时,将寄存器上下文和栈保存到其他地方,>在切回来的时候,恢复...

_Change_
34分钟前
1
0
VS2017下出现 error C2760: 语法错误: 意外的令牌“标识符”,预期的令牌为“;” 的解决办法

属性-c/c++-语言-符合模式:设置成 “否” 将符合模式改成否 即可

simpower
35分钟前
1
0
使用按钮代替input file

使用label标签

西园里的猫
39分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部