From fbc2f3e2a4d91ce193dc052c1a3ec185c979cd27 Mon Sep 17 00:00:00 2001 From: yoshiko2 Date: Mon, 18 Apr 2022 19:55:05 +0800 Subject: [PATCH] Add func get_html() for session --- ADC_function.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/ADC_function.py b/ADC_function.py index 71d4fd9..964617c 100644 --- a/ADC_function.py +++ b/ADC_function.py @@ -70,6 +70,50 @@ def get_html(url, cookies: dict = None, ua: str = None, return_type: str = None, print('[-]Connect Failed! Please check your Proxy or Network!') raise Exception('Connect Failed') +def get_html_requests_html(session, url, cookies: dict = None, ua: str = None, return_type: str = None, encoding: str = None): + """ + 支持会话的网页请求核心函数 + Usage: + from requests_html import HTMLSession + session = HTMLSession() + get_html_requests_html(session,"https://xxx.com/login") + get_html_requests_html(session,"https://xxx.com/xxx") + """ + verify = config.getInstance().cacert_file() + configProxy = config.getInstance().proxy() + errors = "" + + headers = {"User-Agent": ua or G_USER_AGENT} # noqa + + for i in range(configProxy.retry): + try: + if configProxy.enable: + proxies = configProxy.proxies() + result = session.get(str(url), headers=headers, timeout=configProxy.timeout, proxies=proxies, + verify=verify, + cookies=cookies) + else: + result = session.get(str(url), headers=headers, timeout=configProxy.timeout, cookies=cookies) + + if return_type == "object": + return result + elif return_type == "content": + return result.content + else: + result.encoding = encoding or result.apparent_encoding + return result.text + except Exception as e: + print("[-]Connect retry {}/{}".format(i + 1, configProxy.retry)) + errors = str(e) + if "getaddrinfo failed" in errors: + print("[-]Connect Failed! Please Check your proxy config") + debug = config.getInstance().debug() + if debug: + print("[-]" + errors) + else: + print("[-]" + errors) + print('[-]Connect Failed! Please check your Proxy or Network!') + raise Exception('Connect Failed') def post_html(url: str, query: dict, headers: dict = None) -> requests.Response: configProxy = config.getInstance().proxy()