Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import socket
- import threading
- import random
- import itertools
- import socket
- import time
- import random
- import os
- import sys
- import urllib2
- global myip
- myip = urllib2.urlopen("http://icanhazip.com/").read()[:-1]
- def isSocks5(ip, port):
- try:
- sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- sock.settimeout(1)
- sock.connect((ip, port))
- sock.sendall("\x05\x01\x00")
- data = sock.recv(2)
- sock.close()
- if(len(data)<2):
- # Null response
- return False
- if data[0] != "\x05":
- # Not socks5
- return False
- if data[1] != "\x00":
- # Requires authentication
- return False
- return True
- except:
- return False
- def isSocks4(ip, port):
- try:
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.settimeout(1)
- s.connect((ip, port))
- ipaddr = socket.inet_aton(ip)
- packet4 = "\x04\x01" + pack(">H",port) + ipaddr + "\x00"
- socl.sendall(packet4)
- data = sock.recv(8)
- sock.close()
- if(len(data)<2):
- # Null response
- return False
- if data[0] != "\x00":
- # Bad data
- return False
- if data[1] != "\x5A":
- # Server returned an error
- return False
- return True
- except:
- return False
- def http(ip, port):
- global myip
- try:
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.connect((ip, port))
- s.settimeout(1)
- s.send('''GET http://icanhazip.com/ HTTP/1.1
- Host: icanhazip.com
- User-Agent: curl/7.60.0
- Accept: */*
- X-Forwarded-For: ''' + ip + '''
- Proxy-Connection: Keep-Alive
- ''')
- response = s.recv(1024)
- s.close()
- if "200 OK" in response and "Location" not in response:
- if response.split("\n")[-2] == ip or response.split("\n")[-2] == myip:
- return 1
- else:
- return 0
- else:
- return 0
- except socket.error:
- return 0
- except Exception as e:
- print str(e)
- return 0
- def checkProxy(type, ip, port):
- if type == "socks5":
- if isSocks5(ip, port):
- return 5
- if type == "socks4":
- if isSocks4(ip, port):
- return 4
- if type == "http":
- if http(ip, port):
- return 1
- else:
- return 0
- return 0
- def gen_IP_block():
- not_valid = [10,127,169,172,192]
- first = random.randrange(1,256)
- while first in not_valid:
- first = random.randrange(1,256)
- ip = ".".join([str(first),str(random.randrange(1,256)),
- str(random.randrange(1,256))])
- return ip+".1-255"
- def ip_range(input_string):
- octets = input_string.split('.')
- chunks = [map(int, octet.split('-')) for octet in octets]
- ranges = [range(c[0], c[1] + 1) if len(c) == 2 else c for c in chunks]
- addresses = []
- for address in itertools.product(*ranges):
- addresses.append('.'.join(map(str, address)))
- random.shuffle(addresses)
- for address in addresses:
- yield address
- def isOpen(IP, Port):
- try:
- s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.settimeout(0.19)
- result = s.connect_ex((IP, Port))
- if result == 0:
- s.close()
- return True
- s.close()
- except:
- return False
- def checkproxy(proxy, fh):
- try:
- IP = proxy.split(":")[0]
- Port = int(proxy.split(":")[1])
- if isOpen(IP, Port):
- proxy = IP + ":" + str(Port)
- working = False
- if checkProxy('socks5', IP, Port) == 5:
- print "SOCKS5 " + proxy
- working = True
- if checkProxy('socks4', IP, Port) == 4:
- print "SOCKS4 " + proxy
- working = True
- if checkProxy('http', IP, Port) == 1:
- print "HTTP " + proxy
- working = True
- if working:
- fh.write(proxy + "\n")
- fh.flush()
- except:
- pass
- threads = 0
- lines = open(sys.argv[1],"r").read().split("\n")
- random.shuffle(lines)
- lines = list(set(lines))
- print str(len(lines)) + " total proxies to be checked."
- fh = open("sockss.txt","a")
- threadcount=0
- threadstarted=0
- for proxy in lines:
- while threadstarted == 0:
- if threads < 512:
- try:
- threading.Thread(target = checkproxy, args = (proxy,fh,)).start()
- threadstarted = 1
- except Exception as e:
- pass
- threadstarted = 0
- while threads > 0:
- time.sleep(1)
- print "Press enter to quit..."
- for i in range(0,3):
- raw_input()
- os.popen("taskkill /f /pid " + str(os.getpid()))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement