def __init__(self, roomId):
proxyIp = "216.189.158.147"
proxyPort = 52940 # socks ??????
# self.sock = socks.socksocket()
# self.sock.set_proxy(socks.SOCKS5, proxyIp, proxyPort)
self.mongo_clent = MongoDBClient.MongoDBClient('douyu')
# socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, proxyIp, proxyPort)
socks.set_default_proxy(socks.PROXY_TYPE_SOCKS5, proxyIp, proxyPort)
socket.socket = socks.socksocket
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.codeLocalToServer = 689
self.serverToLocal = 690
self.gid = -9999
self.roomId = roomId
self.server = {}
self.log("??? :" + str(self.roomId))
python类socksocket()的实例源码
def connect_to_server(self):
self.channels_to_join = copy.deepcopy(self.irc_channels)
glados.log('Connecting to: {}:{}'.format(self.host, self.port))
try:
self.socket = socks.socksocket()
if not self.irc_settings.setdefault('proxy host', 'none') == 'none' \
and not self.irc_settings.setdefault('proxy port', 'none') == 'none':
self.socket.setproxy(socks.PROXY_TYPE_SOCKS5, self.irc_settings['proxy host'], int(self.irc_settings['proxy port']), True)
self.socket.connect((self.host, self.port))
self.send_raw_message('USER {0} {0} {0} :{0}\n'.format(self.botnick))
if not self.irc_settings.setdefault('password', 'none') == '':
#self.send_raw_message('PRIVMSG NickServ :IDENTIFY {} {}\n'.format(self.botnick, self.irc_settings['password']))
self.send_raw_message('PASS {}\n'.format(self.irc_settings['password']))
self.send_raw_message('NICK {}\n'.format(self.botnick))
self.state = self.STATE_TRY_JOIN
except Exception as e:
glados.log('Exception caught: {}'.format(e))
exc_info = sys.exc_info()
traceback.print_exception(*exc_info)
def run(self): # la funzione che da' le istruzioni ai vari threads
data = random._urandom(1024) # data per il pacchetto random
p = bytes(IP(dst=str(url2))/TCP(sport=RandShort(), dport=int(port))/data) # costruzione pacchetto tcp + data
current = x # per dare l'id al thread
if current < len(proxies): # se l'id del thread si puo' associare ad un proxy, usa quel proxy
proxy = proxies[current].strip().split(':')
else: # altrimenti lo prende a random
proxy = random.choice(proxies).strip().split(":")
go.wait() # aspetta che tutti i proxy siano pronti
while True:
try:
socks.setdefaultproxy(socks.PROXY_TYPE_HTTP, str(proxy[0]), int(proxy[1]), True) # comando per il proxying HTTP
s = socks.socksocket() # creazione socket
s.connect((str(url2),int(port))) # si connette
s.send(p) # ed invia
print ("Request sent from " + str(proxy[0]+":"+proxy[1]) + " @", self.counter) # print req + counter
except: # se si verifica un errore
s.close() # chiude il thread e ricomincia
def run(self): # la funzione che da' le istruzioni ai vari threads
data = random._urandom(1024) # data per il pacchetto random
p = bytes(IP(dst=str(url2))/UDP(dport=int(port))/data) # crea pacchetto udp classico + data
current = x # per dare l'id al thread
if current < len(proxies): # se l'id del thread si puo' associare ad un proxy, usa quel proxy
proxy = proxies[current].strip().split(':')
else: # altrimenti lo prende a random
proxy = random.choice(proxies).strip().split(":")
go.wait() # aspetta che threads sono pronti
while True:
try:
socks.setdefaultproxy(socks.PROXY_TYPE_HTTP, str(proxy[0]), int(proxy[1]), True) # comando per il proxying HTTP
s = socks.socksocket() # creazione socket
s.connect((str(url2),int(port))) # connessione
s.send(p) # invio
print ("Request sent from " + str(proxy[0]+":"+proxy[1]) + " @", self.counter) # print req + counter
except: # se qualcosa va storto
s.close() # chiude il socket
def init_proxy(proxy):
res = urlparse(proxy)
use_proxy = True
if res.scheme == 'socks4':
mode = socks.SOCKS4
elif res.scheme == 'socks5':
mode = socks.SOCKS5
elif res.scheme == 'http':
mode = socks.HTTP
else:
use_proxy = False
ksprint.print_error('Unknown proxy "%s", starting without proxy...' % proxy)
if use_proxy:
socks.set_default_proxy(mode, res.netloc.split(':')[0], int(res.netloc.split(':')[1]))
soc.socket = socks.socksocket
ksprint.print_success('[*] Proxy "%s" using' % proxy)
def init_proxy(proxy):
res = urlparse(proxy)
use_proxy = True
if res.scheme == 'socks4':
mode = socks.SOCKS4
elif res.scheme == 'socks5':
mode = socks.SOCKS5
elif res.scheme == 'http':
mode = socks.HTTP
else:
use_proxy = False
ksprint.print_error('Unknown proxy "%s", starting without proxy...' % proxy)
if use_proxy:
socks.set_default_proxy(mode, res.netloc.split(':')[0], int(res.netloc.split(':')[1]))
soc.socket = socks.socksocket
ksprint.print_success('[*] Proxy "%s" using' % proxy)
def init_proxy(proxy):
res = urlparse(proxy)
use_proxy = True
if res.scheme == 'socks4':
mode = socks.SOCKS4
elif res.scheme == 'socks5':
mode = socks.SOCKS5
elif res.scheme == 'http':
mode = socks.HTTP
else:
use_proxy = False
ksprint.print_error('Unknown proxy "%s", starting without proxy...' % proxy)
if use_proxy:
socks.set_default_proxy(mode, res.netloc.split(':')[0], int(res.netloc.split(':')[1]))
soc.socket = socks.socksocket
ksprint.print_success('[*] Proxy "%s" using' % proxy)
def _do_read(self, query, raw=False):
# send query to server, return JSON
rethinker = doublethink.Rethinker(db="trough_configuration", servers=self.rethinkdb)
healthy_databases = list(rethinker.table('services').get_all(self.database, index='segment').run())
healthy_databases = [db for db in healthy_databases if db['role'] == 'trough-read' and (rethinker.now().run() - db['last_heartbeat']).seconds < db['ttl']]
try:
assert len(healthy_databases) > 0
except:
raise Exception('No healthy node found for segment %s' % self.database)
url = urlparse(healthy_databases[0].get('url'))
if self.proxy:
conn = HTTPConnection(self.proxy, self.proxy_port)
conn.set_tunnel(url.netloc, url.port)
conn.sock = socks.socksocket()
conn.sock.set_proxy(self.proxy_type, self.proxy, self.proxy_port)
conn.sock.connect((url.netloc.split(":")[0], url.port))
else:
conn = HTTPConnection(url.netloc)
request_path = "%s?%s" % (url.path, url.query)
conn.request("POST", request_path, query)
response = conn.getresponse()
results = json.loads(response.read())
self._last_results = results
def __init__(self, ipv6=False, ssl=False, proxy=False, proxy_host=None, proxy_port=None, proxy_type=None):
self.attachments = []
if proxy:
self.attachments.append("proxy")
self.socket = socks.socksocket()
self.socket.set_proxy(proxy_type, proxy_host, proxy_port)
elif ipv6:
self.attachments.append("IPv6")
self.socket = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
else:
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
if ssl and not proxy:
self.attachments.append("SSL")
self.socket = _ssl.wrap_socket(self.socket)
self.connect = self.socket.connect
self.close = self.socket.close
self.connected = False
def URL(url):
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)
socket.socket = socks.socksocket
socket.create_connection = create_connection
file_name = url.split('/')[-1]
u = urllib2.urlopen(url)
f = open(file_name, 'wb')
meta = u.info()
file_size = int(meta.getheaders("Content-Length")[0])
print "Downloading: %s Bytes: %s" % (file_name, file_size)
file_size_dl = 0
block_sz = 8192
while True:
buffer = u.read(block_sz)
if not buffer:
break
file_size_dl += len(buffer)
f.write(buffer)
status = r"%10d [%3.2f%%]" % (file_size_dl, file_size_dl * 100. / file_size)
status = status + chr(8)*(len(status)+1)
print status,
f.close()
print ""
def _update(__version__, __code_name__, language, socks_proxy):
try:
if socks_proxy is not None:
socks_version = socks.SOCKS5 if socks_proxy.startswith('socks5://') else socks.SOCKS4
socks_proxy = socks_proxy.rsplit('://')[1]
socks.set_default_proxy(socks_version, str(socks_proxy.rsplit(':')[0]), int(socks_proxy.rsplit(':')[1]))
socket.socket = socks.socksocket
socket.getaddrinfo = getaddrinfo
data = requests.get(url, headers={"User-Agent": "OWASP Nettacker"}).content
if version() is 3:
data = data.decode("utf-8")
if __version__ + ' ' + __code_name__ == data.rsplit('\n')[0]:
info(messages(language, 103))
else:
warn(messages(language, 101))
warn(messages(language, 85))
except:
warn(messages(language, 102))
return
def _check(__version__, __code_name__, language, socks_proxy):
try:
if socks_proxy is not None:
socks_version = socks.SOCKS5 if socks_proxy.startswith('socks5://') else socks.SOCKS4
socks_proxy = socks_proxy.rsplit('://')[1]
socks.set_default_proxy(socks_version, str(socks_proxy.rsplit(':')[0]), int(socks_proxy.rsplit(':')[1]))
socket.socket = socks.socksocket
socket.getaddrinfo = getaddrinfo
data = requests.get(url, headers={"User-Agent": "OWASP Nettacker"}).content
if version() is 3:
data = data.decode("utf-8")
if __version__ + ' ' + __code_name__ == data.rsplit('\n')[0]:
info(messages(language, 103))
else:
warn(messages(language, 101))
except:
warn(messages(language, 102))
return
def __connect_to_port(port, timeout_sec, target, retries, language, num, total, time_sleep, ports_tmp_filename, socks_proxy):
exit = 0
if socks_proxy is not None:
socks_version = socks.SOCKS5 if socks_proxy.startswith('socks5://') else socks.SOCKS4
socks_proxy = socks_proxy.rsplit('://')[1]
socks.set_default_proxy(socks.SOCKS5, str(socks_proxy.rsplit(':')[0]), int(socks_proxy.rsplit(':')[1]))
socket.socket = socks.socksocket
socket.getaddrinfo = getaddrinfo
while 1:
try:
if timeout_sec is not None:
my_ftp = FTP(timeout=timeout_sec)
else:
my_ftp = FTP()
my_ftp.connect(target, int(port))
exit = 0
break
except:
exit += 1
if exit is retries:
error(messages(language, 68).format(target, port, str(num), str(total)))
try:
f = open(ports_tmp_filename, 'a')
f.write(str(port) + '\n')
f.close()
except:
pass
break
time.sleep(time_sleep)
def test(target, retries, timeout_sec, user_agent, http_method, socks_proxy):
if socks_proxy is not None:
socks_version = socks.SOCKS5 if socks_proxy.startswith('socks5://') else socks.SOCKS4
socks_proxy = socks_proxy.rsplit('://')[1]
socks.set_default_proxy(socks_version, str(socks_proxy.rsplit(':')[0]), int(socks_proxy.rsplit(':')[1]))
socket.socket = socks.socksocket
socket.getaddrinfo = getaddrinfo
n = 0
while 1:
try:
if http_method == "GET":
r = requests.get(target, timeout=timeout_sec, headers=user_agent, verify=True)
elif http_method == "HEAD":
r = requests.head(target, timeout=timeout_sec, headers=user_agent, verify=True)
return 0
except:
n += 1
if n is retries:
return 1
def _recreate_socket(self):
if self._proxy is None:
self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
else:
import socks
self._socket = socks.socksocket(socket.AF_INET, socket.SOCK_STREAM)
if type(self._proxy) is dict:
self._socket.set_proxy(**self._proxy)
else: # tuple, list, etc.
self._socket.set_proxy(*self._proxy)
def _recreate_socket(self):
if self._proxy is None:
self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
else:
import socks
self._socket = socks.socksocket(socket.AF_INET, socket.SOCK_STREAM)
if type(self._proxy) is dict:
self._socket.set_proxy(**self._proxy)
else: # tuple, list, etc.
self._socket.set_proxy(*self._proxy)
def run(self):
while self.running:
while self.running:
try:
if self.tor:
self.socks.setproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)
self.socks.connect((self.host, self.port))
print term.BOL+term.UP+term.CLEAR_EOL+"Connected to host..."+ term.NORMAL
break
except Exception, e:
if e.args[0] == 106 or e.args[0] == 60:
break
print term.BOL+term.UP+term.CLEAR_EOL+"Error connecting to host..."+ term.NORMAL
time.sleep(1)
continue
while self.running:
try:
self._send_http_post()
except Exception, e:
if e.args[0] == 32 or e.args[0] == 104:
print term.BOL+term.UP+term.CLEAR_EOL+"Thread broken, restarting..."+ term.NORMAL
self.socks = socks.socksocket()
break
time.sleep(0.1)
pass
def _recreate_socket(self, mode):
if self.proxy is None:
self._socket = socket.socket(mode, socket.SOCK_STREAM)
else:
import socks
self._socket = socks.socksocket(mode, socket.SOCK_STREAM)
if type(self.proxy) is dict:
self._socket.set_proxy(**self.proxy)
else: # tuple, list, etc.
self._socket.set_proxy(*self.proxy)
self._socket.settimeout(self.timeout)
def connectTor():
try:
SOCKS_PORT = 9050
# Set socks proxy and wrap the urllib module
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, '127.0.0.1', SOCKS_PORT)
socket.socket = socks.socksocket
# Perform DNS resolution through the socket
def getaddrinfo(*args):
return [(socket.AF_INET, socket.SOCK_STREAM, 6, '', (args[0], args[1]))]
socket.getaddrinfo = getaddrinfo
except:
e = sys.exc_info()[0]
print( "Error: %s" % e +"\n## Can't establish connection with TOR")
def _simple_check_worker():
global _checking_lock, _checking_num, network_stat, last_check_time
time_now = time.time()
if config.PROXY_ENABLE:
socket.socket = socks.socksocket
xlog.debug("patch socks")
_checking_lock.acquire()
_checking_num += 1
_checking_lock.release()
network_ok = False
for host in ["www.microsoft.com", "www.apple.com", "code.jquery.com", "cdn.bootcss.com", "cdnjs.cloudflare.com"]:
if _check_one_host(host):
network_ok = True
break
if network_ok:
last_check_time = time.time()
report_network_ok()
xlog.debug("network is ok, cost:%d ms", 1000 * (time.time() - time_now))
else:
xlog.warn("network fail")
network_stat = "Fail"
last_check_time = time.time()
_checking_lock.acquire()
_checking_num -= 1
_checking_lock.release()
if config.PROXY_ENABLE:
socket.socket = default_socket
xlog.debug("restore socket")
def _simple_check_worker():
global _checking_lock, _checking_num, network_stat, last_check_time
time_now = time.time()
if config.PROXY_ENABLE:
socket.socket = socks.socksocket
xlog.debug("patch socks")
_checking_lock.acquire()
_checking_num += 1
_checking_lock.release()
network_ok = False
for host in ["www.microsoft.com", "www.apple.com", "code.jquery.com", "cdn.bootcss.com", "cdnjs.cloudflare.com"]:
if _check_one_host(host):
network_ok = True
break
if network_ok:
last_check_time = time.time()
report_network_ok()
xlog.debug("network is ok, cost:%d ms", 1000 * (time.time() - time_now))
else:
xlog.warn("network fail")
network_stat = "Fail"
last_check_time = time.time()
_checking_lock.acquire()
_checking_num -= 1
_checking_lock.release()
if config.PROXY_ENABLE:
socket.socket = default_socket
xlog.debug("restore socket")
def connect(self):
"""Connect to the host and port specified in __init__."""
# Mostly verbatim from httplib.py.
if self.proxy_info and socks is None:
raise ProxiesUnavailableError(
'Proxy support missing but proxy use was requested!')
msg = "getaddrinfo returns an empty list"
for res in socket.getaddrinfo(self.host, self.port, 0,
socket.SOCK_STREAM):
af, socktype, proto, canonname, sa = res
try:
if self.proxy_info and self.proxy_info.isgood():
self.sock = socks.socksocket(af, socktype, proto)
# HACK: amorton enabled TCP_NODELAY on socket
self.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
self.sock.setproxy(*self.proxy_info.astuple())
else:
self.sock = socket.socket(af, socktype, proto)
self.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
# Different from httplib: support timeouts.
if has_timeout(self.timeout):
self.sock.settimeout(self.timeout)
# End of difference from httplib.
if self.debuglevel > 0:
print "connect: (%s, %s)" % (self.host, self.port)
self.sock.connect(sa)
except socket.error, msg:
if self.debuglevel > 0:
print 'connect fail:', (self.host, self.port)
if self.sock:
self.sock.close()
self.sock = None
continue
break
if not self.sock:
raise socket.error, msg
def connect(self):
"""Connect to the host and port specified in __init__."""
# Mostly verbatim from httplib.py.
msg = "getaddrinfo returns an empty list"
for res in socket.getaddrinfo(self.host, self.port, 0,
socket.SOCK_STREAM):
af, socktype, proto, canonname, sa = res
try:
if self.proxy_info and self.proxy_info.isgood():
self.sock = socks.socksocket(af, socktype, proto)
self.sock.setproxy(*self.proxy_info.astuple())
else:
self.sock = socket.socket(af, socktype, proto)
# Different from httplib: support timeouts.
if self.timeout is not None:
self.sock.settimeout(self.timeout)
# End of difference from httplib.
if self.debuglevel > 0:
print "connect: (%s, %s)" % (self.host, self.port)
self.sock.connect(sa)
except socket.error, msg:
if self.debuglevel > 0:
print 'connect fail:', (self.host, self.port)
if self.sock:
self.sock.close()
self.sock = None
continue
break
if not self.sock:
raise socket.error, msg
def __init__(self, room_id):
threading.Thread.__init__(self)
proxyIp = "116.255.153.137"
proxyPort = 8082
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, proxyIp, proxyPort)
# socket.socket = socks.socksocket
self.mongo_clent = MongoDBClient.MongoDBClient('douyu')
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.codeLocalToServer = 689
self.serverToLocal = 690
self.gid = -9999
self.roomId = room_id
self.server = {}
self.log("??? :" + str(self.roomId))
def __init__(self):
proxyIp = "116.255.153.137"
proxyPort = 8082
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, proxyIp, proxyPort)
# socket.socket = socks.socksocket
self.mongo_clent = MongoDBClient.MongoDBClient('douyu')
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.codeLocalToServer = 689
self.serverToLocal = 690
self.gid = -9999
self.rid = 16789
self.server = {}
def _connect(self):
global _server_ip, _proxy_ip
host = _server_ip.get_server_ip(self.whois_srv) # ?????
host = host if host else self.whois_srv
if flag_proxy:
proxy_info = _proxy_ip.get(self.whois_srv) # ??IP
if proxy_info is not None:
socks.setdefaultproxy(
proxytype=socks.PROXY_TYPE_SOCKS4 if proxy_info.mode == 4 else socks.PROXY_TYPE_SOCKS5,
addr=proxy_info.ip,
port=proxy_info.port)
socket.socket = socks.socksocket
self.tcpCliSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.setdefaulttimeout(20)
data_result = ""
try:
self.tcpCliSock.connect((host, 43))
self.tcpCliSock.send(self.request_data + '\r\n')
except socket.error as e:
if str(e).find("timed out") != -1: # ????
return "ERROR -1"
elif str(e).find("Temporary failure in name resolution") != -1:
return "ERROR -2"
else:
return "ERROR OTHER"
while True:
try:
data_rcv = self.tcpCliSock.recv(1024)
except socket.error as e:
return "ERROR -3"
if not len(data_rcv):
return data_result # ??????
data_result = data_result + data_rcv # ????????
def _connect(self):
global _server_ip, _proxy_ip
host = _server_ip.get_server_ip(self.whois_srv) # ?????
host = host if host else self.whois_srv
if flag_proxy:
proxy_info = _proxy_ip.get(self.whois_srv) # ??IP
if proxy_info is not None:
socks.setdefaultproxy(
proxytype=socks.PROXY_TYPE_SOCKS4 if proxy_info.mode == 4 else socks.PROXY_TYPE_SOCKS5,
addr=proxy_info.ip,
port=proxy_info.port)
socket.socket = socks.socksocket
self.tcpCliSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.setdefaulttimeout(20)
data_result = ""
try:
self.tcpCliSock.connect((host, 43))
self.tcpCliSock.send(self.request_data + '\r\n')
except socket.error as e:
if str(e).find("timed out") != -1: # ????
return "ERROR -1"
elif str(e).find("Temporary failure in name resolution") != -1:
return "ERROR -2"
else:
return "ERROR OTHER"
while True:
try:
data_rcv = self.tcpCliSock.recv(1024)
except socket.error as e:
return "ERROR -3"
if not len(data_rcv):
return data_result # ??????
data_result = data_result + data_rcv # ????????
def _connect(self):
"""??????whois??
???socks.py (ver 1.5.7)"""
# whois???ip???ip
global _proxy_socks
self.tcpCliSock = socks.socksocket() # ??socket??
self.tcpCliSock.settimeout(TIMEOUT) # ??????
data_result = ""
try:
self.tcpCliSock.connect((self.whois_srv, 43)) # ??whois???
self.tcpCliSock.send(self.request_data + '\r\n') # ????
except Exception as e: # Exception??socks.py ??????
if str(e).find("timed out") != -1 or \
str(e).find("TTL expired") != -1: # ????
self.tcpCliSock.close()
return "ERROR -1"
elif str(e).find("Temporary failure in name resolution") != -1 or \
str(e).find("cannot connect to identd on the client") != -1 or \
str(e).find("unreachable") != -1:
self.tcpCliSock.close()
return "ERROR -2"
else:
self.tcpCliSock.close()
return "ERROR OTHER"
# ????
while True:
try:
data_rcv = self.tcpCliSock.recv(1024) # ??????
except:
self.tcpCliSock.close()
return "ERROR -3"
if not len(data_rcv):
self.tcpCliSock.close()
return data_result # ??????
data_result = data_result + data_rcv # ????????
def __init__(self, context, database):
self.database = database
self.sock = socks.socksocket()
self.sock.setproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)