![]() |
|
HideMyAssProxyGrabber - Printable Version +- Sinisterly (https://sinister.ly) +-- Forum: Coding (https://sinister.ly/Forum-Coding) +--- Forum: Python (https://sinister.ly/Forum-Python) +--- Thread: HideMyAssProxyGrabber (/Thread-HideMyAssProxyGrabber) |
HideMyAssProxyGrabber - Charon - 11-25-2012 Hello everyone, So I have been searching in my computer and found this HideMyAssProxyGrabber which is pretty useful in my opinion. This is not coded by me, all the copyrights goes to: mich4th3c0wb0y. Enjoy! Source: Code: #!/usr/bin/python
# Author: mich4th3c0wb0y
# (c) R00TW0RM - Private Community
# https://r00tw0rm.com/
# Greets: To all members of r00tw0rm !!
# Example: python hidemyass.py -f proxy.txt -n 17 -t http://google.com
import socket
socket.setdefaulttimeout(4)
import urllib2
import cookielib
import httplib
import string
import argparse
import random
import re
import sys
from threading import Thread
g_count = 0 # global counter for found Proxy
class Proxy:
def __init__(self):
self.userAgentList = [
('User-Agent','Mozilla/5.0 (X11; Linux x86_64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2'),
('User-Agent','Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10'),
('User-Agent','Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.8'),
('User-Agent','Opera/9.80 (Macintosh; Intel Mac OS X; U; en) Presto/2.2.15 Version/10.00')
]
self.goodProxyList = []
self.proxyIndex = 0 # getNextProxy() ...
def changeProxy(self, proxy): # proxy format = {'http':'http://...'}
cj = cookielib.LWPCookieJar()
opener = urllib2.build_opener(urllib2.ProxyHandler(proxy), urllib2.HTTPCookieProcessor(cj))
# random userAgent
opener.addheaders = [ self.userAgentList[ random.randint(0,len(self.userAgentList)-1) ]]
urllib2.install_opener(opener)
def getProxy(self, index):
if(len(self.goodProxyList) > index):
tmp = self.pythonProxyList( [self.goodProxyList[index]] )
return tmp[0]
else:
print '[!] getProxy(%d) fail'%(index)
def getRandomProxy(self):
index = random.randint( 0, len(self.goodProxyList)-1 )
return self.pythonProxyList( [self.goodProxyList[index]] )[0]
def getNextProxy(self):
self.proxyIndex = (self.proxyIndex+1) % len(self.goodProxyList)
return self.getProxy(self.proxyIndex)
def getProxyCount(self):
return len(self.goodProxyList)
def threadWorker(self, proxy, testUrl):
try:
cj = cookielib.LWPCookieJar()
opener = urllib2.build_opener(urllib2.ProxyHandler({'http':'http://%s'%(proxy)}), urllib2.HTTPCookieProcessor(cj))
opener.addheaders = [ self.userAgentList[ random.randint(0,len(self.userAgentList)-1) ]]
res = opener.open(testUrl)
print 'ok: %s => %d'%(proxy, g_count+1)
self.goodProxyList.append(proxy)
except Exception as e:
print 'fail: %s'%(proxy)
def getNewProxyList(self, pageCount, testUrl, multiThreading=False):
count = 0
finish = False
page = 1
threadList = []
while(not(finish)):
proxyList = self.hideMyAssGrabber(page)
if multiThreading:
for proxy in proxyList:
threadList.append(Thread(None, self.threadWorker, None, (proxy, testUrl) ) )
threadList[-1].start()
for thread in threadList:
thread.join()
threadList = []
else:
for proxy in proxyList:
finish = self.threadWorker(proxy, testUrl)
if page >= pageCount:
print '[+] Finish'
break
page += 1
return self.goodProxyList
def hideMyAssGrabber(self, page):
#TODO: </span>225.107<span style="..> does not work but it is not often used by hidemyass
#TODO: clean this mess up ...
self.changeProxy({'':''}) # without facke User-Agend hidemyass block you after the first page
print '### http://hidemyass.com/proxy-list/%d ###'%(page)
res = urllib2.urlopen('http://hidemyass.com/proxy-list/%d'%(page)).read()
prePattern = r'(.*<td><span>)(.*)(</span></td>.*)'
#divPattern = r'<div.*</###>' # always hidden cause div = newline :P
spanOnlyPattern = r'(.*<span>)(.*\d+.*)(</###>.*)' # always visable
spanClassPattern = r'(.*<span.*class=".*".*>)(.*\d+.*)(</###>.*)' # think always visable
#spanStyleHiddenPattern = r'.*<span.*style="display:none".*>.*</###>.*' # always hidden
spanStyleVisablePattern = r'(.*<span.*style="display:.*inline".*>)(.*\d+.*)(</###>.*)'# always visable
spanNumberLeftPattern = r'\D*(\d+)\D*(<span.*)'
divNumberLeftPattern = r'\D*(\d+)\D*(<div.*)'
numberOnlyPattern = r'\D*(\d+)$'
tmpList1 = res.split('\n')
tmpList2 = []
switch = False
c = 0
for line in tmpList1:
tmp = re.match(prePattern, line)
if(tmp):
switch = True
tmpList2.append(tmp.group(2))
if(switch):
c += 1
if(c == 3):
tmpList2.append(line)
switch = False
c = 0
tmpList1 = []
for i in tmpList2:
tmpList1.append(re.sub(r'(</div>)|(</span>)', '</###>\n', i))
### Debug Output ###
#print 'IP: ',tmpList1[4]
#print 'Port: ',tmpList1[1]
###########################
switch = False
contentList = []
proxyList = []
for i in tmpList1:
if(not(switch)): # IP
switch = True
i = i.split('\n')
contentList = []
for j in i:
#tmp = re.search(divPattern, j)
#if(tmp):
# pass
#tmp = re.match(spanStyleHiddenPattern, j)
#if(tmp):
# pass
tmp = re.match(spanOnlyPattern, j)
if(tmp):
contentList.append(tmp.group(2))
tmp = re.match(spanStyleVisablePattern, j)
if(tmp):
contentList.append(tmp.group(2))
tmp = re.match(spanClassPattern, j)
if(tmp):
contentList.append(tmp.group(2))
tmp = re.match(spanNumberLeftPattern, j)
if(tmp):
contentList.append(tmp.group(1))
tmp = re.match(numberOnlyPattern, j)
if(tmp):
contentList.append(tmp.group(1))
tmp = re.match(divNumberLeftPattern, j)
if(tmp):
contentList.append(tmp.group(1))
#print contentList
else: # Port
switch = False
if(len(contentList) == 4):
[a,b,c,d] = contentList
proxyList.append('%s.%s.%s.%s:%s'%(a, b, c, d, i.rstrip('</td>\n')) )
else:
#print contentList
pass
return proxyList
def writeProxyList(self, fileName):
fd = open(fileName, 'w')
if(len(self.goodProxyList) == 0):
self.getNewProxyList()
for proxy in self.goodProxyList:
fd.write('%s\n'%(proxy))
#print '%s'%proxy
fd.close()
def readProxyList(self, fileName):
fd = open(fileName, 'r')
for proxy in fd:
proxy = proxy.rstrip(' \n')
self.goodProxyList.append(proxy)
fd.close()
return self.goodProxyList
def pythonProxyList(self, proxyList):
ret = []
for proxy in proxyList:
ret.append({'http':'http://%s'%(proxy)})
return ret
def main():
banner = '''
_ _ _
| |__ (_) __| | ___ _ __ ___ _ _ __ _ ___ ___
| '_ \| |/ _` |/ _ \ '_ ` _ \| | | |/ _` / __/ __|
| | | | | (_| | __/ | | | | | |_| | (_| \__ \__ \\
|_| |_|_|\__,_|\___|_| |_| |_|\__, |\__,_|___/___/ Proxy Grabber
|___/
Author: mich4th3c0wb0y
(c) R00TW0RM - Private Community
https://r00tw0rm.com/
Greets: To all members of r00tw0rm !!\n\n'''
parser = argparse.ArgumentParser(description='Hidemyass Proxy Grabber',
epilog='\n%s\n\nGrabbe 17 Proxies from hidemyass.com and save them to proxy.txt\n'\
'make sure that all saved Proxies works with google.com\n\n'\
'Example: python %s -f proxy.txt -n 17 -t http://google.com\n\n%s\n'%( '-'*80, sys.argv[0], '-'*80),
formatter_class=argparse.RawTextHelpFormatter)
parser.add_argument('-f', action='store', dest='fileName', help='Filename to store new Proxies' )
parser.add_argument('-n', action='store', type=int, dest='numberOfPages',
help='Number of Pages you want to grabbe' )
parser.add_argument('-t', action='store', dest='testPage', help='URL to test for. Like http://google.com' )
parser.add_argument('--multithreading', action='store_true', dest='threads',
help='Use for every test a single thread')
#args = parser.parse_args(['-f', 'proxy.txt', '-n', '2', '-t', 'twitter.com', '--multithreading' ])
args = parser.parse_args(sys.argv[1:])
print banner
if(args.fileName and args.numberOfPages and args.testPage):
if(not(re.match(r'^http://.*',args.testPage))):
args.testPage = 'http://%s'%(args.testPage)
proxy = Proxy()
proxy.getNewProxyList(args.numberOfPages, args.testPage, multiThreading=args.threads)
proxy.writeProxyList(args.fileName)
else:
parser.print_help()
sys.exit(0)
print '\n'
if __name__ == '__main__':
main()RE: HideMyAssProxyGrabber - Bannedshee - 11-25-2012 Wow thanks! awesome posT!!!! |