เครื่องมือสร้างทราฟฟิก HTTP/S "ทั่วไป" ที่รวดเร็วและสกปรก
เพียงแค่สคริปต์ Python ธรรมดา (เขียนไม่ดี) ที่ "เรียกดู" อินเทอร์เน็ตอย่างไร้จุดหมายโดยเริ่มต้นที่ ROOT_URLS
ที่กำหนดไว้ล่วงหน้าและสุ่ม "คลิก" ลิงก์บนหน้าเว็บจนกว่าจะถึง MAX_DEPTH
ที่กำหนดไว้ล่วงหน้า
ฉันสร้างสิ่งนี้ขึ้นมาเพื่อใช้เป็นเครื่องกำเนิดสัญญาณรบกวนเพื่อใช้สำหรับการจำลองการตอบสนองต่อเหตุการณ์/การป้องกันเครือข่าย ปัญหาเดียวคือสภาพแวดล้อมการจำลองของฉันใช้อุปกรณ์ IDS/IPS/NGFW หลายตัวซึ่งจะไม่ผ่านและบันทึก TCPreplay แบบง่ายของทราฟฟิกกระป๋อง ฉันต้องการให้ทราฟฟิกเป็นไปตามธรรมชาติมากที่สุดเท่าที่จะเป็นไปได้ โดยเลียนแบบผู้ใช้จริงที่กำลังท่องเว็บเป็นหลัก
ทดสอบบน Ubuntu 14.04 และ 16.04 น้อยที่สุด แต่ควรใช้ได้กับทุกระบบที่ติดตั้ง Python
เรียบง่ายที่สุดเท่าที่จะเป็นไปได้...
ขั้นแรก ระบุการตั้งค่าบางอย่างที่ด้านบนของสคริปต์...
MAX_DEPTH = 10
, MIN_DEPTH = 5
เริ่มต้นจากแต่ละ URL ราก (เช่น: www.yahoo.com) ตัวสร้างของเราจะคลิกไปที่ความลึกที่เลือกอย่างสุ่มระหว่าง MIN_DEPTH และ MAX_DEPTHช่วงเวลาระหว่างคำขอ HTTP GET ทุกคำขอจะถูกเลือกแบบสุ่มระหว่างตัวแปรสองตัวต่อไปนี้...
MIN_WAIT = 5
รออย่างน้อย 5
วินาทีระหว่างคำขอ... โปรดใช้ความระมัดระวังในการส่งคำขออย่างรวดเร็วเนื่องจากอาจทำให้เว็บเซิร์ฟเวอร์ไม่พอใจ
MAX_WAIT = 10
ฉันคิดว่าคุณเข้าใจประเด็นแล้ว
DEBUG = False
คนตัดไม้ของคนจน ตั้งค่าเป็น True
สำหรับการพิมพ์แบบเรียลไทม์แบบละเอียดไปยังคอนโซลสำหรับการดีบักหรือการพัฒนา ฉันจะรวมการบันทึกที่เหมาะสมในภายหลัง (อาจจะ)
ROOT_URLS = [url1,url2,url3]
รายการ URL รูทที่จะเริ่มต้นเมื่อเรียกดู สุ่มเลือก
blacklist = [".gif", "intent/tweet", "badlink", etc...]
บัญชีดำของสตริงที่เราตรวจสอบทุกลิงก์ หากลิงก์มีสตริงใดๆ ในรายการนี้ ลิงก์นั้นจะถูกยกเลิก มีประโยชน์ในการหลีกเลี่ยงสิ่งที่ไม่เป็นมิตรต่อผู้สร้างทราฟฟิก เช่น "ทวีตสิ่งนี้!" ลิงค์หรือลิงค์ไปยังไฟล์ภาพ
userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3).......'
คุณเดาถูกแล้ว ตัวแทนผู้ใช้เบราว์เซอร์ที่ไม่มีส่วนหัวของเราส่งมอบให้กับเว็บเซิร์ฟเวอร์ คุณอาจปล่อยให้มันเป็นค่าเริ่มต้นได้ แต่คุณสามารถเปลี่ยนแปลงได้ตามใจชอบ ฉันขอแนะนำอย่างยิ่งให้ใช้แบบทั่วไป/ถูกต้อง ไม่เช่นนั้นคุณอาจได้รับการจำกัดอัตราอย่างรวดเร็ว
สิ่งเดียวที่คุณต้องการและ อาจ ไม่มีคือ requests
คว้ามันไปด้วย
sudo pip install requests
สร้างไฟล์กำหนดค่าของคุณก่อน:
cp config.py.template config.py
เรียกใช้เครื่องกำเนิดไฟฟ้า:
python gen.py
หากต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่เกิดขึ้นภายใต้ประทุน ให้เปลี่ยนตัวแปร Debug ใน config.py
จาก False
เป็น True
สิ่งนี้ให้ผลลัพธ์ต่อไปนี้...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Traffic generator started
Diving between 3 and 10 links deep into 489 different root URLs,
Waiting between 5 and 10 seconds between requests.
This script will run indefinitely. Ctrl+C to stop.
Randomly selecting one of 489 URLs
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Recursively browsing [https://arstechnica.com] ~~~ [depth = 7]
Requesting page...
Page size: 77.6KB
Data meter: 77.6KB
Good requests: 1
Bad reqeusts: 0
Scraping page for links
Found 171 valid links
Pausing for 7 seconds...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Recursively browsing [https://arstechnica.com/author/jon-brodkin/] ~~~ [depth = 6]
Requesting page...
Page size: 75.7KB
Data meter: 153.3KB
Good requests: 2
Bad reqeusts: 0
Scraping page for links
Found 168 valid links
Pausing for 9 seconds...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Recursively browsing [https://arstechnica.com/information-technology/2020/01/directv-races-to-decommission-broken-boeing-satellite-before-it-explodes/] ~~~ [depth = 5]
Requesting page...
Page size: 43.8KB
Data meter: 197.1KB
Good requests: 3
Bad reqeusts: 0
Scraping page for links
Found 32 valid links
Pausing for 8 seconds...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Recursively browsing [https://www.facebook.com/sharer.php?u=https%3A%2F%2Farstechnica.com%2F%3Fpost_type%3Dpost%26p%3D1647915] ~~~ [depth = 4]
Requesting page...
Page size: 64.2KB
Data meter: 261.2KB
Good requests: 4
Bad reqeusts: 0
Scraping page for links
Found 0 valid links
Stopping and blacklisting: no links
URL สุดท้ายที่พยายามเป็นตัวอย่างที่ดีว่าเมื่อใดที่ URL หนึ่งเกิดข้อผิดพลาด เราเพียงเพิ่มลงในอาร์เรย์ config.blacklist
ในหน่วยความจำของเรา และเรียกดูต่อ วิธีนี้จะป้องกันไม่ให้ URL ที่รู้จักที่ไม่ถูกต้องกลับสู่คิว