
간편하고 대충 만든 HTTP/S "자연스러운" 트래픽 생성기.
빠르고 간단한 HTTP/S "유기적" 트래픽 생성기입니다.
단순한 (형편없이 작성된) 파이썬 스크립트로, 미리 정의된 ROOT_URLS에서 시작하여 페이지의 링크를 무작위로 '클릭'하면서 미리 정의된 MAX_DEPTH에 도달할 때까지 인터넷을 목적 없이 '서핑'합니다.
이 도구는 침해 대응/네트워크 방어 시뮬레이션에서 사용할 노이즈 생성기로 만들었습니다. 유일한 문제는 시뮬레이션 환경에 여러 IDS/IPS/NGFW 장비가 있어서 단순한 TCP 재생(캔 트래픽)을 통과시키고 로깅하지 않는다는 점입니다. 가능한 한 유기적인 트래픽이 필요했고, 본질적으로 실제 사용자가 웹을 탐색하는 모습을 모방해야 했습니다.
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", 등...] 모든 링크를 검사하는 문자열 블랙리스트입니다. 링크에 이 목록의 문자열이 포함되어 있으면 폐기됩니다. '트윗하기!' 링크나 이미지 파일 링크처럼 트래픽 생성기에 적합하지 않은 항목을 피하는 데 유용합니다.
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
내부에서 무슨 일이 일어나고 있는지 더 자세히 알아보려면 config.py의 Debug 변수를 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에서 오류가 발생할 때의 좋은 예를 보여줍니다. 해당 URL을 메모리의 config.blacklist 배열에 추가하고 계속 탐색합니다. 이렇게 하면 알려진 불량 URL이 큐에 다시 들어오는 것을 방지합니다.