Python Web Contents Capture Tool

English 简体中文 繁体中文 ภาษาไทย Tiếng Việt
Summary

This article introduces two Python tools for web data collection: a Web Contents Download Tool and a Web Screenshot Tool. The download tool systematically scrapes and saves all webpage components, including HTML, CSS, JavaScript, images, and SSL certificates, from a list of URLs into structured local folders. Complementing this, the screenshot tool captures full or partial webpage images in batches, leveraging various browser drivers or Qt5. Both utilities offer flexible APIs for individual or batch URL processing. A practical application combines these tools with the NUS-Phishperida project into a multi-threaded Web Attestation Tool, automating the process of downloading content, capturing screenshots, and analyzing thousands of URLs to identify potential phishing websites.

在本节中,我们将介绍两种简单的网页内容捕获工具:网页内容下载工具和网页截图工具。开发这些工具是为了方便收集网络数据,这些数据可用于各种大数据项目。此外,我们将探讨一个用例,其中这些工具用于批量网络钓鱼网站验证。

# Author:      Yuancheng Liu
# Created:     2024/09/10
# Version:     v_0.2.1
# Copyright:   Copyright (c) 2025 Liu Yuancheng

----------------------------------------------------------------------------------------------------

Python 网页内容下载工具

程序设计目的:我们的目标是开发一个专为大数据项目量身定制的 Python 库,专门用于数据收集。该库将有助于抓取和下载与多批网页相关的所有组件,包括 .html 文件、.css 样式表、图像、XML 文件、视频、JavaScript 文件和主机 SSL 证书,基于提供的 URL 列表。

程序工作流程如下图所示:

Figure-00: Python_web_contents_download_tool_workflow_diagram, version v0.1.2 (2024)

简介

该模块提供了一个 API,用于下载网页的各种组件,包括 HTML 文件、图像、CSS 文件、XML 文件、JavaScript 文件和超链接,基于输入的 URL(必须以“http”或“https”开头)。该模块的输入和输出流程如下图所示:

该库将首先下载 Web 主 HTML 内容,然后使用 Python `beautifulsoup` 库解析 Web HTML 文件源中的所有内容,以获取链接的 HTML、图像、Java script、CSS,然后逐个下载内容并保存在相关的本地文件夹中。它将提供一个灵活的 API,允许与其他程序无缝集成。

程序用法

用户有两种执行程序的方式:单独处理 URL 或批量处理多个 URL。

使用控制台界面

要单独处理 URL,用户可以直接运行程序并按照提供的步骤操作:

python webDownload.py

使用记录文件批量处理 URL

步骤 1:准备要处理的 URL 列表,方法是将它们复制到 URL 记录文件“urllist.txt”中。

步骤 2:导航到程序文件夹并使用以下命令执行程序:`python testCase.py`

步骤 3:检查结果:

例如,如果您将 URL "https://www.carousell.sg/" 作为要检查的第一个 URL 复制到文件 "urllist.txt" 文件中,则所有 HTML 文件、图像文件和 js 文件都将位于文件夹 "`1_www.carousell.sg_files`" 下。

  • 主网页将保存为:"`1_www.carousell.sg_files/1_www.carousell.sg.html`"
  • 页面中使用的图像将保存在文件夹中:"`1_www.carousell.sg_files/img`"
  • 通过 href 导入的 html/imge/css 将保存在文件夹中:"`1_www.carousell.sg_files/link`"
  • 页面使用的 js 文件将保存在文件夹中:"`1_www.carousell.sg_files/script`"
  • URL https://www.carousell.sg/ 字符串将保存在文件 1_www.carousell.sg_files/Info.txt 中。
  • 主机 www.carousell 的证书将下载为文件 1_www.carousell.sg_files/cert/cert.der。

项目 GitHub Repo 链接 : https://github.com/LiuYuancheng/Py_Web_Contents_Download_Tool

----------------------------------------------------------------------------------------------------

Python 网页截图工具

程序设计目的:我们的目标是开发一个 Python 库,用于大数据项目的数据收集,该库可以根据 URL 列表批量捕获网页屏幕截图,以支持各种编程用例。程序工作流程如下图所示:

简介

该模块使用户能够使用不同的 Web 浏览器驱动程序或 Qt5 库的 `QtWebEngineWidgets`,根据提供的 URL 捕获特定部分或整个网页的屏幕截图。用户可以通过指定“driverMode”参数来选择所需的库,以在对象初始化期间捕获网页。该模块作为单线程程序运行。模块的输入和输出流程如下所示:

该库利用两种不同的 Web 驱动程序,`Selenium Google Chrome Driver` 和 `QT5 Web Engine`,来捕获网页屏幕截图。它提供了一个灵活的 API,允许与其他程序无缝集成。

要同时处理多个 URL,用户可以将他们希望捕获的所有 URL 列在“urllist.txt”文件中,如下所示(以字符“#”开头的行将被视为注释并忽略):

# Add the URL you want to download line by line(The url must start with 'http' or 'https' ):
# example: https://www.google.com
https://www.google.com
https://www.carousell.sg/
https://www.google.com/search?q=github&sxsrf=AOaemvJh3t5_h8H85AE8Ajbb1IMnBrRISA%3A1636698503535&source=hp&ei=hwmOYY6mHdGkqtsPq8S9sAY&iflsig=ALs

之后,执行测试用例程序 `testCase.py`,捕获的屏幕截图将保存在输出文件夹 `outputFolder` 中。

程序用法

用户有两种执行程序的方式:单独处理 URL 或批量处理多个 URL。所有屏幕截图图像文件都将以 `shot_yymmdd_hhmmss.png` 格式保存在输出文件夹 `outputFolder` 下。

使用控制台界面

要单独处理 URL,用户可以直接运行程序并按照提供的步骤操作:

python webScreenShoter.py

使用记录文件批量处理 URL

准备要处理的 URL 列表,方法是将它们复制到 URL 记录文件“urllist.txt”中。

导航到程序文件夹并使用以下命令执行程序:`python testCase.py`

检查结果:例如,如果“https://www.carousell.sg/”是“urllist.txt”中列出的第一个 URL,则屏幕截图文件 shot.png 将保存在文件夹“1_www.carousell.sg_files”中。

项目 GitHub Repo 链接 :

https://github.com/LiuYuancheng/Py_Web_Screenshot_Capture_Tool

----------------------------------------------------------------------------------------------------

用例:Python 网页认证工具

程序设计目的:我们想要创建一个自动化工具来检查几批 Web URL(范围从 1 到 10,000),并识别其中的网络钓鱼网站/URL。该程序将从给定的 URL 列表下载 Web 内容,然后捕获网页的屏幕截图,并将所有数据馈送到 `Phishperida` 程序中。程序工作流程如下图所示:

该项目将利用由 Yun Lin 教授和 Ruofan Liu 开发的 NUS-Phishperida 项目,用于网络钓鱼网站识别。此外,它将利用 Py_Web_Screenshot_Capture_ToolPy_Web_Contents_Download_Tool 进行自动 Web 内容存档。

简介

该模块是使用 `NUS-Phishperida-Project` 提供的 API 为 URL/Web 认证而设计的。它包含四个主要模块:

  • DatasetLoader:负责从配置文件中批量加载 URL 数据集,并过滤已处理的 URL。
  • WebDownloader:有助于抓取和下载网页组件。
  • WebScreenShoter:捕获网页屏幕截图。
  • PhishperidaPKG:一个包装器模块,用于调用 `Phishperida` 库并记录验证结果。

对于每个 URL,程序都会执行以下步骤:

  1. 利用 `WebDownloader` 模块下载所有网页组件。
  2. 使用 `webScreenShoter` 模块捕获网页屏幕截图。
  3. 将网页组件和屏幕截图传递给 `PhishperidaPKG` 进行 `siamese` 检查。

DatasetLoader 模块

  • 该模块从 URL 列表加载 URL 数据,记录已处理的 URL 和错误 URL。如果程序/线程崩溃,它会在重新启动时恢复其任务,忽略已处理的 URL,并在继续处理未处理的 URL 之前删除损坏的文件。

WebDownloader 模块

  • 请参阅之前的 Python 网页内容下载工具

WebScreenShoter 模块

  • 请参阅之前的 Python 网页截图工具

PhishperidaPKG 模块

  • 该模块用于封装 `NUS-Phishperida` 项目(非 OOP),作为一个黑盒 API 供其他项目使用。
  • `NUS-Phishperida` 项目 Github Repo 链接:https://github.com/lindsey98/Phishpedia

多线程设计

使用具有后台执行控制器、多线程执行、任务平衡器的多线程:

程序用法

将要检查的 URL 复制到 URL 记录文件“urllist.txt”中

Cd 到程序文件夹并运行程序执行 cmd:

python webAttestation.py

在文件 `resultPcdurl.txt` 和 `resultErrurl.txt` 中检查处理结果

项目 GitHub Repo 链接: https://github.com/LiuYuancheng/Python_Web_Attestation_Tool


感谢您花时间查看文章详细信息,如果您有任何问题和建议或发现任何程序错误,请随时给我留言。非常感谢您能提出一些意见并分享任何改进建议,以便我们能够改进我们的工作~

 

  RELATED

No related programming articles found. Browse all programming tutorials and articles.

  COMMENTS

0

No comment for this article.