11from utils .Singleton import Singleton
2- import requests
2+ import ssl
3+ import urllib3
4+ from urllib3 .contrib .socks import SOCKSProxyManager
35
46
57class Request (Singleton ):
@@ -22,25 +24,32 @@ def __init__(self, url, user_agent, cookies_string=False, custom_header=False, i
2224 self .__headers ['Cookie' ] = cookies_string
2325 if custom_header :
2426 self .__parse_custom_header (custom_header )
25- self .__verify = True if insecure_ssl == 'false' else False
27+ self .__verify = 'CERT_REQUIRED' if insecure_ssl == 'false' else 'CERT_NONE'
2628 if proxy :
27- self .__proxies = dict ()
28- self .__proxies ['http' ] = proxy
29- self .__proxies ['https' ] = proxy
29+ self .__proxy = proxy
30+ urllib3 .disable_warnings (urllib3 .exceptions .InsecureRequestWarning )
31+ if proxy :
32+ proxy_type = proxy .split ('://' )[0 ]
33+ if proxy_type == 'http' or proxy_type == 'https' :
34+ self .__request_obj = urllib3 .ProxyManager (self .__proxy , ssl_version = ssl .PROTOCOL_TLSv1 ,
35+ timeout = self .__request_timeout , cert_reqs = self .__verify )
36+ else :
37+ self .__request_obj = SOCKSProxyManager (self .__proxy , ssl_version = ssl .PROTOCOL_TLSv1 ,
38+ timeout = self .__request_timeout , cert_reqs = self .__verify )
3039 else :
31- self .__proxies = False
40+ self .__request_obj = urllib3 .PoolManager (ssl_version = ssl .PROTOCOL_TLSv1 , timeout = self .__request_timeout ,
41+ cert_reqs = self .__verify )
3242 # print (vars(self))
3343
3444 def send_request (self , request ):
3545 try :
36- response_object = requests .post (self .__url ,
37- data = {'data' : request },
38- timeout = self .__request_timeout ,
39- allow_redirects = self .__allow_redirects ,
40- headers = self .__headers ,
41- verify = self .__verify ,
42- proxies = self .__proxies
43- )
46+ response_object = self .__request_obj .request ('POST' ,
47+ self .__url ,
48+ fields = {'data' : request },
49+ redirect = self .__allow_redirects ,
50+ headers = self .__headers ,
51+ retries = False
52+ )
4453 except KeyboardInterrupt :
4554 raise Exception ('Keyboard interrupt issued' )
46- return response_object .status_code , response_object .headers , response_object .text
55+ return response_object .status , response_object .headers , response_object .data
0 commit comments