File: testUserAgents.py

package info (click to toggle)
modsecurity-crs 3.3.8-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,664 kB
  • sloc: ansic: 727; perl: 443; python: 421; sh: 90; ruby: 69; javascript: 53; makefile: 14
file content (37 lines) | stat: -rw-r--r-- 1,240 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from ftw import ruleset, http, errors

"""
This script reads in a list of popular Useragents and checks to see if it triggers
It expects 403's to be returned for a rule firing
"""

def read_useragents(filename):
    f = open(filename,'r')
    useragents = [agent.strip() for agent in f.readlines()]
    return useragents

def run_requests(useragent_list):
    status_not_403 = 0
    status_403 = 0
    for useragent in useragent_list:
        # get me a counter while i'm waiting
        if (status_not_403 + status_403)%15 == 0:
            print("Send",status_not_403 + status_403, "Out of",len(useragent_list))
        input_data = ruleset.Input(method="GET", protocol="http",port=80,uri='/',dest_addr="localhost",headers={"Host":"localhost","User-Agent":useragent})
        http_ua = http.HttpUA()
        http_ua.send_request(input_data)
        status = http_ua.response_object.status
        if status == 403:
            status_403 += 1
        else:
            status_not_403 += 1
    x = (status_403/(len(useragent_list)*1.0))*100
    y = (status_not_403/(len(useragent_list)*1.0))*100
    print "403s =", x
    print "not 403s =", y


def main():
    uas = read_useragents('./data/popularUAs.data')
    run_requests(uas)
main()