一、Wget.Fit 的停服与源码分享
在 2023 年 10 月 24 日这个特殊的日子,Wget.Fit 宣布停服,这无疑让众多依赖它的用户感到惋惜。然而,令人欣慰的是,Wget.Fit 的开发者将网站的原理以及源码慷慨地公布了出来。我怀着兴奋与好奇,迅速将这些宝贵的资源搬运了过来。对于那些对技术充满热忱、渴望探索未知的朋友们来说,现在有了一个绝佳的机会,可以按照这份教程,尝试亲手搭建一个属于自己的扒站程序,开启一段充满挑战与乐趣的技术之旅。
二、Wget 的工作原理
Wget 这个强大的工具,在处理任务时有着一套严谨而高效的流程。首先,它会对输入的 url 进行细致入微的解析,如同一位经验丰富的侦探,从中提取出协议、路径等关键信息。接着,凭借这些信息,Wget 犹如一位勇敢的探险家,建立与服务器的连接,并果断地发送请求。服务器在接收到请求报文后,会迅速作出回应,返回相应的响应报文。Wget 则会像一位聪明的学者,对这个响应进行深入解析并作出恰当的响应。如果一切顺利,请求成功,服务器就会将所需的资源毫无保留地返回至 Wget。而 Wget 也会根据响应信息,以一种有条不紊的方式,将资源递归地保存至本地,确保每一个数据都能被妥善安置。
三、Windows 版本下的 Wget 调用
在 Windows 环境中,Wget 的调用也有着独特的方式。以下是具体的操作步骤:
- 首先,打开命令提示符窗口,执行以下命令:
plaintext
Copy
@echo off & cd /d %~dp0
mode con cols=100
call :showLogo
pause
exit
- 接着,定义一个名为
showLogo
的标签:
plaintext
Copy
:showLogo
title Wget downloads tool 2.0-Wget.fit
color 80
mode con cols=72 lines=22
if not exist.outlogo (
echo IF9fICAgICAgICAgIF9fICAgICAgICBfICAgICBfX19fX18gXyBfICAgX19fICAgIF9fXyAgCiBcIFwgICAgICAgIC8gLyAgICAgICB8IHwgICB8ICBfX19fKF8pIHwgfF9fIFwgIC8gXyBcIAogIFwgXCAgL1wgIC8gL18gXyAgX19ffCB8XyAgfCB8X18gICBffCB8XyAgICkgfHwgfCB8IHwKICAgXCBcLyAgXC8gLyBfYCB8LyBfIFwgX198IHwgIF9ffCB8IHwgX198IC8gLyB8IHwgfCB8CiAgICBcICAvXCAgLyAoX3wgfCAgX18vIHxfIF98IHwgICAgfCB8IHxfIC8gL18gfCB8X3wgfAogICAgIFwvICBcLyBcX18sIHxcX19ffFxfXyhfKV98ICAgIHxffFxfX3xfX19fKF8pX19fLyAKICAgICAgICAgICAgIF9fLyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIHxfX18vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA==>.logo
certutil -decode.logo.outlogo>nul
del.logo
)
type.outlogo
echo.
echo The principle of this tool is very simple, is to apply wget with bat
echo Official website: www.wget.fit
echo=====================================================================
- 然后,设置输入变量:
plaintext
Copy
set /p a=Url(http/https):
color 2f
mode con cols=80 lines=25
- 最后,调用 Wget 执行下载任务:
plaintext
Copy
wget.exe -U‘Mozilla/5.0 -r -p -np -k --no-check-certificate %a%
cls
title Wget downloads tool 2.0-Wget.fit
echo The task is complete. Press Enter to exit
echo. &pause >nul
运行时,会呈现出如图所示的画面。
四、扒站网站建设
- 文件目录结构:
- wget.fit 网站的文件目录结构清晰明了。其中包括
api.php
(作为 api 接口)、common.php
(网站全局文件)、Config.php
(网站核心文件)、index.php
(网站主页)、ssh.class.php
(ssh 认证文件)以及wget_site.sh
(wget 请求文件)。此外,还有一个名为work
的目录,用于网站预览。
- wget.fit 网站的文件目录结构清晰明了。其中包括
- 网站主页功能:
- 网站主页主要用于请求
api.php
。当接收到 POST 请求时,会进行一系列的操作。首先,它会检查是否有名为 ‘url’ 和 ’email’ 的 POST 请求参数被发送。如果存在这些参数,程序会继续执行以下步骤:- 使用
get_code
函数检查指定 URL 的 HTTP 响应代码是否为 200。如果不是,它将返回一个 JSON 响应,提示 “爬取失败,请检查网址是否正确!”。 - 接着,检查 URL 是否以 “http://” 或 “https://” 开头。如果不是,它会返回一个 JSON 响应,提醒用户 “域名请带上协议头!如 ( http:// 或 https://)”。
- 然后,生成一个随机文件名($file),该文件名包括 URL 的主机名和一个随机数。
- 通过 SSH 连接到服务器,并运行一个 bash 命令来执行爬取操作,将结果保存到名为 $file.zip 的文件中。
- 如果爬取成功并且文件存在,它将构建一个包含下载链接的消息,并通过 SMTP 发送到指定的电子邮件地址。最后,返回一个 JSON 响应,其中包含成功或失败的代码,以及相应的消息和链接。
- 使用
- 如果没有接收到 ‘url’ 参数,程序将执行以下代码段:
- 定义了一个名为
trans_byte
的函数,用于将字节数转换为更容易阅读的格式,如 KB、MB、GB、TB 等。 - 通过
glob
函数获取指定目录下的所有 ZIP 文件的文件名,并存储在一个数组中。同时,计算 ZIP 文件的数量、总页数、当前页数以及分页的起始位置。 - 构建 JSON 响应并返回。
- 定义了一个名为
- 网站主页主要用于请求
ssh.class.php
文件解析:ssh.class.php
是一个 PHP 类Components_Ssh
,主要用于建立 SSH 连接和执行远程命令,同时还具备日志记录功能。- 这个类包含了多个成员变量,如
host
(SSH 服务器主机名)、user
(SSH 登录用户名)、pass
(SSH 登录密码)、port
(SSH 服务器端口)、conn
(SSH 连接状态)、error
(SSH 连接错误信息)、stream
(SSH 执行命令的流)、stream_timeout
(SSH 执行命令的超时时间)、log
(日志信息)、lastLog
(最后一条日志)以及sLog
(服务器日志记录标志)。 - 类中定义了多个方法,如构造函数
__construct
用于接收 SSH 连接所需的参数,并尝试建立连接和进行认证;isConnected
方法用于检查 SSH 连接状态;__get
方法用于获取类的属性;connect
方法用于建立 SSH 连接;authenticate
方法用于进行 SSH 认证;cmd
方法用于执行 SSH 命令;shellCmd
方法用于在虚拟终端中执行 SSH 命令;getLastOutput
和getOutput
方法分别用于获取最后一次和所有 SSH 命令的输出;disconnect
方法用于断开 SSH 连接;logAction
方法用于记录日志。
wget_site.sh
文件解读:wget_site.sh
是一个 Shell 脚本文件,主要用于执行扒站操作。- 首先,它指定了使用的 Shell 为 Bash。然后,使用
wget
命令下载指定 URL 的内容,并进行一系列操作,包括递归下载整个目录、下载所有页面相关资源、不遍历父目录、将 HTML 文件中的链接转换为本地链接以及指定下载文件的存储路径。接着,复制readme.txt
文件到下载目录下,进入下载目录,压缩下载的文件和目录为一个 ZIP 文件,移动 ZIP 文件到指定目录,并删除下载工作目录及其内容(实际上是故意写错的,为了留下文件预览)。
综上所述,通过这些步骤和文件的协同作用,我们可以成功搭建一个属于自己的扒站平台。现在,让我们一起动手,探索技术的奥秘,打造属于自己的强大工具吧!
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容