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') โฟลว์อินพุตและเอาต์พุตของโมดูลแสดงอยู่ในไดอะแกรมด้านล่าง:

ไลบรารีจะดาวน์โหลดเนื้อหา html หลักของเว็บก่อน จากนั้นใช้ lib beautifulsoup ของ python เพื่อแยกวิเคราะห์เนื้อหาทั้งหมดจากซอร์สไฟล์ 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`"
  • html/imge/css ที่นำเข้าโดย href จะถูกบันทึกในโฟลเดอร์: "`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

ลิงก์ไปยัง Repo GitHub ของโปรเจ็กต์ : https://github.com/LiuYuancheng/Py_Web_Contents_Download_Tool

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

เครื่องมือจับภาพหน้าจอเว็บด้วย Python

จุดประสงค์ในการออกแบบโปรแกรม: วัตถุประสงค์ของเราคือการพัฒนาไลบรารี Python สำหรับวัตถุประสงค์ในการรวบรวมข้อมูลของโปรเจ็กต์บิ๊กดาต้า ซึ่งสามารถจับภาพหน้าจอเว็บเป็นชุด โดยอิงตามรายการ URL เพื่อรองรับกรณีการใช้งานเชิงโปรแกรมต่างๆ ขั้นตอนการทำงานของโปรแกรมแสดงดังรูปด้านล่าง:

บทนำ

โมดูลนี้ช่วยให้ผู้ใช้สามารถจับภาพหน้าจอของส่วนที่เฉพาะเจาะจงหรือทั้งหน้าเว็บโดยใช้ไดรเวอร์เว็บเบราว์เซอร์ต่างๆ หรือ QtWebEngineWidgets ของไลบรารี Qt5 โดยอิงตาม URL ที่ให้มา ผู้ใช้สามารถเลือกไลบรารีที่ต้องการสำหรับการจับภาพหน้าเว็บระหว่างการเริ่มต้นอ็อบเจ็กต์โดยการระบุพารามิเตอร์ "driverMode" โมดูลนี้ทำงานเป็นโปรแกรม Single-Threaded โฟลว์อินพุตและเอาต์พุตของโมดูลแสดงอยู่ด้านล่าง:

ไลบรารีใช้เว็บไดรเวอร์สองตัวที่แตกต่างกัน, 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

หลังจากนั้น ให้เรียกใช้โปรแกรม test case testCase.py และภาพหน้าจอที่จับภาพจะถูกบันทึกในโฟลเดอร์เอาต์พุต outputFolder

การใช้งานโปรแกรม

ผู้ใช้มีสองตัวเลือกสำหรับการเรียกใช้โปรแกรม: ประมวลผล URL ทีละรายการ หรือประมวลผล URL หลายรายการเป็นชุด ไฟล์ภาพหน้าจอทั้งหมดจะถูกบันทึกในโฟลเดอร์เอาต์พุต outputFolder ภายใต้รูปแบบ shot_yymmdd_hhmmss.png

ใช้ส่วนต่อประสานคอนโซล

ในการประมวลผล URL ทีละรายการ ผู้ใช้สามารถเรียกใช้โปรแกรมได้โดยตรงและทำตามขั้นตอนที่ให้ไว้:

python webScreenShoter.py

ประมวลผล URL เป็นชุดด้วยไฟล์บันทึก

เตรียมรายการ URL ที่จะประมวลผลโดยคัดลอกลงในไฟล์บันทึก URL "urllist.txt"

นำทางไปยังโฟลเดอร์โปรแกรมและเรียกใช้โปรแกรมโดยใช้คำสั่งต่อไปนี้: python testCase.py

ตรวจสอบผลลัพธ์: ตัวอย่างเช่น หาก "https://www.carousell.sg/" เป็น URL แรกที่แสดงรายการใน "urllist.txt" ไฟล์ภาพหน้าจอ shot.png จะถูกบันทึกในโฟลเดอร์ "1_www.carousell.sg_files"

ลิงก์ไปยัง Repo GitHub ของโปรเจ็กต์ :

https://github.com/LiuYuancheng/Py_Web_Screenshot_Capture_Tool

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

กรณีการใช้งาน: เครื่องมือรับรองความถูกต้องเว็บด้วย Python

จุดประสงค์ในการออกแบบโปรแกรม: เราต้องการสร้างเครื่องมืออัตโนมัติเพื่อตรวจสอบ URL เว็บหลายชุด (ตั้งแต่ 1 ถึง 10,000) และระบุเว็บไซต์/URL ฟิชชิ่งในหมู่พวกเขา โปรแกรมจะดาวน์โหลดเนื้อหาเว็บจากรายการ URL ที่กำหนด จากนั้นจับภาพหน้าจอของหน้าเว็บ และป้อนข้อมูลทั้งหมดลงในโปรแกรม Phishperida ขั้นตอนการทำงานของโปรแกรมแสดงดังรูปด้านล่าง:

โปรเจ็กต์จะใช้ประโยชน์จาก โปรเจ็กต์ NUS-Phishperida ซึ่งพัฒนาโดย Prof. Yun Lin และ Ruofan Liu สำหรับการระบุเว็บไซต์ฟิชชิ่ง นอกจากนี้ จะใช้ Py_Web_Screenshot_Capture_Tool และ Py_Web_Contents_Download_Tool สำหรับการเก็บถาวรเนื้อหาเว็บอัตโนมัติ

บทนำ

โมดูลนี้สร้างขึ้นสำหรับการรับรองความถูกต้องของ URL/เว็บ โดยใช้ API ที่จัดทำโดย NUS-Phishperida-Project ประกอบด้วยสี่โมดูลหลัก:

  • DatasetLoader: รับผิดชอบในการโหลดชุดข้อมูล URL จากไฟล์กำหนดค่าเป็นชุด และกรอง URL ที่ประมวลผลแล้ว
  • WebDownloader: อำนวยความสะดวกในการขูดและดาวน์โหลดส่วนประกอบของหน้าเว็บ
  • WebScreenShoter: จับภาพหน้าจอเว็บ
  • PhishperidaPKG: โมดูล Wrapper เพื่อเรียกใช้ไลบรารี 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 กล่องดำเพื่อให้โปรเจ็กต์อื่นใช้งาน
  • ลิงก์ไปยัง Repo Github ของโปรเจ็กต์ NUS-Phishperida : https://github.com/lindsey98/Phishpedia

การออกแบบ Multi-Threading

ใช้ Multi-Thread พร้อมตัวควบคุมการดำเนินการเบื้องหลัง, การดำเนินการ Multithread, ตัวปรับสมดุลงาน:

การใช้งานโปรแกรม

คัดลอก url ที่คุณต้องการตรวจสอบในไฟล์บันทึก url "urllist.txt"

Cd ไปยังโฟลเดอร์โปรแกรมและเรียกใช้ cmd การดำเนินการโปรแกรม:

python webAttestation.py

ตรวจสอบผลลัพธ์ของกระบวนการในไฟล์: resultPcdurl.txt และ resultErrurl.txt

ลิงก์ไปยัง Repo GitHub ของโปรเจ็กต์: 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.