Advertisement
KekSec

Socks4/Socks5/HTTP Proxy Checker

Jul 28th, 2018
9,450
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.82 KB | None | 0 0
  1. import socket
  2. import threading
  3. import random
  4. import itertools
  5. import socket
  6. import time
  7. import random
  8. import os
  9. import sys
  10. import urllib2
  11.  
  12. global myip
  13. myip = urllib2.urlopen("http://icanhazip.com/").read()[:-1]
  14.  
  15. def isSocks5(ip, port):
  16.     try:
  17.         sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  18.         sock.settimeout(1)
  19.         sock.connect((ip, port))
  20.         sock.sendall("\x05\x01\x00")
  21.         data = sock.recv(2)
  22.         sock.close()
  23.         if(len(data)<2):
  24.             # Null response
  25.             return False
  26.         if data[0] != "\x05":
  27.             # Not socks5
  28.             return False
  29.         if data[1] != "\x00":
  30.             # Requires authentication
  31.             return False
  32.         return True
  33.     except:
  34.         return False
  35. def isSocks4(ip, port):
  36.     try:
  37.         s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  38.         s.settimeout(1)
  39.         s.connect((ip, port))
  40.         ipaddr = socket.inet_aton(ip)
  41.         packet4 = "\x04\x01" + pack(">H",port) + ipaddr + "\x00"
  42.         socl.sendall(packet4)
  43.         data = sock.recv(8)
  44.         sock.close()
  45.         if(len(data)<2):
  46.             # Null response
  47.             return False
  48.         if data[0] != "\x00":
  49.             # Bad data
  50.             return False
  51.         if data[1] != "\x5A":
  52.             # Server returned an error
  53.             return False
  54.         return True
  55.     except:
  56.         return False
  57. def http(ip, port):
  58.     global myip
  59.     try:
  60.         s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  61.         s.connect((ip, port))
  62.         s.settimeout(1)
  63.         s.send('''GET http://icanhazip.com/ HTTP/1.1
  64. Host: icanhazip.com
  65. User-Agent: curl/7.60.0
  66. Accept: */*
  67. X-Forwarded-For: ''' + ip + '''
  68. Proxy-Connection: Keep-Alive
  69.  
  70. ''')
  71.         response = s.recv(1024)
  72.         s.close()
  73.         if "200 OK" in response and "Location" not in response:
  74.             if response.split("\n")[-2] == ip or response.split("\n")[-2] == myip:
  75.                 return 1
  76.             else:
  77.                 return 0
  78.         else:
  79.             return 0
  80.     except socket.error:
  81.         return 0
  82.     except Exception as e:
  83.         print str(e)
  84.         return 0
  85.  
  86. def checkProxy(type, ip, port):
  87.     if type == "socks5":
  88.         if isSocks5(ip, port):
  89.             return 5
  90.     if type == "socks4":
  91.         if isSocks4(ip, port):
  92.             return 4
  93.     if type == "http":
  94.         if http(ip, port):
  95.             return 1
  96.     else:
  97.         return 0
  98.     return 0
  99.    
  100. def gen_IP_block():
  101.     not_valid = [10,127,169,172,192]
  102.     first = random.randrange(1,256)
  103.     while first in not_valid:
  104.         first = random.randrange(1,256)
  105.     ip = ".".join([str(first),str(random.randrange(1,256)),
  106.     str(random.randrange(1,256))])
  107.     return ip+".1-255"
  108.  
  109. def ip_range(input_string):
  110.     octets = input_string.split('.')
  111.     chunks = [map(int, octet.split('-')) for octet in octets]
  112.     ranges = [range(c[0], c[1] + 1) if len(c) == 2 else c for c in chunks]
  113.     addresses = []
  114.     for address in itertools.product(*ranges):
  115.         addresses.append('.'.join(map(str, address)))
  116.     random.shuffle(addresses)
  117.     for address in addresses:
  118.         yield address
  119.  
  120. def isOpen(IP, Port):
  121.     try:
  122.         s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  123.         s.settimeout(0.19)
  124.         result = s.connect_ex((IP, Port))
  125.         if result == 0:
  126.             s.close()
  127.             return True
  128.         s.close()
  129.     except:
  130.         return False
  131.  
  132. def checkproxy(proxy, fh):
  133.     try:
  134.         IP = proxy.split(":")[0]
  135.         Port = int(proxy.split(":")[1])
  136.         if isOpen(IP, Port):
  137.             proxy = IP + ":" + str(Port)
  138.             working = False
  139.             if checkProxy('socks5', IP, Port) == 5:
  140.                 print "SOCKS5 " + proxy
  141.                 working = True
  142.             if checkProxy('socks4', IP, Port) == 4:
  143.                 print "SOCKS4 " + proxy
  144.                 working = True
  145.             if checkProxy('http', IP, Port) == 1:
  146.                 print "HTTP " + proxy
  147.                 working = True
  148.             if working:
  149.                 fh.write(proxy + "\n")
  150.                 fh.flush()
  151.     except:
  152.         pass
  153. threads = 0
  154. lines = open(sys.argv[1],"r").read().split("\n")
  155. random.shuffle(lines)
  156. lines = list(set(lines))
  157. print str(len(lines)) + " total proxies to be checked."
  158. fh = open("sockss.txt","a")
  159. threadcount=0
  160. threadstarted=0
  161. for proxy in lines:
  162.     while threadstarted == 0:
  163.         if threads < 512:
  164.             try:
  165.                 threading.Thread(target = checkproxy, args = (proxy,fh,)).start()
  166.                 threadstarted = 1
  167.             except Exception as e:
  168.                 pass
  169.     threadstarted = 0
  170. while threads > 0:
  171.     time.sleep(1)
  172. print "Press enter to quit..."
  173. for i in range(0,3):
  174.     raw_input()
  175.  
  176. os.popen("taskkill /f /pid " + str(os.getpid()))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement