Created
September 2, 2022 05:56
-
-
Save TSW1133/5ceaf2613e49d4f081370d8903c8bf22 to your computer and use it in GitHub Desktop.
WINhttp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# coding:utf-8 | |
import time | |
import requests | |
class WinHttp: | |
__WinHttp_modes = 0 # 默认为 GET 访问 | |
__WinHttp_url = "" | |
__WinHttp_txt = "" | |
__WinHttp_resp = "" | |
__WinHttp_headers = { | |
'Content-Type': "application/json", | |
'User-Agent': "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (HTML, like Gecko) " | |
"Chrome/104.0.5112.102 Mobile Safari/537.36 Edg/104.0.1293.70 " | |
} | |
__WinHttp_Cookies = {} | |
__WinHttp_Time = 0 | |
__WinHttp_proxies = {'http': None, 'https': None} | |
def Open(self, url, modes): # 入参数 url 为 地址 modes 为方法 “GET||0” “POST||1” | |
if url is not None and modes is not None: | |
self.__WinHttp_url = url | |
resp = True | |
if modes == "GET" or modes == 0: | |
self.__WinHttp_modes = 0 | |
else: | |
self.__WinHttp_modes = 1 | |
else: | |
resp = False | |
self.__WinHttp_Time = int(round(time.time() * 1000)) | |
return resp | |
def Send(self, body=""): | |
if self.__WinHttp_modes == 0: | |
resp = requests.get(url=self.__WinHttp_url, headers=self.__WinHttp_headers, proxies=self.__WinHttp_proxies) | |
else: | |
resp = requests.post(url=self.__WinHttp_url, data=body, headers=self.__WinHttp_headers, | |
proxies=self.__WinHttp_proxies) | |
self.__WinHttp_resp = resp | |
self.__WinHttp_Time = int(round(time.time() * 1000)) - self.__WinHttp_Time | |
return True | |
def GetResponseTxt(self, modes=1): | |
resp = self.__WinHttp_resp.text | |
if modes == 1: | |
resp = self.__WinHttp_resp.text | |
elif modes == 2: | |
resp = resp.encode("utf-8").decode("utf-8") | |
elif modes == 3: | |
resp = resp.encode("raw_unicode_escape").decode("utf-8") | |
return resp | |
def GetResponseHeaders(self): # 取出全部协议头 | |
resp = self.__WinHttp_resp.headers | |
return resp | |
def GetResponseHeader(self, name, value_modes=False): # 取出指定协议头 | |
if name == "": | |
back = "失败[没有传入需获取的键名]" | |
return back | |
if value_modes is True: | |
back = f'{name}{":"}{self.__WinHttp_resp.headers[name]}' | |
else: | |
back = self.__WinHttp_resp.headers[name] | |
return back | |
def SetHeader(self, name, value): # 设置单个Header | |
if name == '' or value == '': | |
resp = "失败[没有传入设置的Header]" | |
return resp | |
elif name == 'Content-Type': | |
resp = "已存在" | |
return resp | |
elif name == 'User-Agent': | |
self.__WinHttp_headers['User-Agent'] = value | |
else: | |
self.__WinHttp_headers.update({f'{name}': f'{value}'}) | |
return self.__WinHttp_headers | |
def GetResponseCookies(self): | |
resp = self.__WinHttp_resp.cookies | |
return resp | |
def GetTimes(self): | |
return self.__WinHttp_Time | |
def GetResponseCookie(self, name): | |
if name == '': | |
resp = "失败[没有传入需要的Cookie]" | |
return resp | |
else: | |
resp = self.__WinHttp_resp.cookies[name] | |
return resp | |
def GetProxiesByUrl(self, url): | |
if url == "": | |
resp = "URL链接错误" | |
else: | |
re = requests.get(url=url) | |
resp = re.text | |
return resp.split() | |
def SetProxies(self, proxies): | |
self.__WinHttp_proxies = { | |
'http': 'http://'f'{proxies}', | |
'https': 'https://'f'{proxies}', | |
} | |
return self.__WinHttp_proxies |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment