encode.py 3.9 KB
Newer Older
H
hjdhnx 已提交
1 2 3 4 5 6 7 8
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# File  : encode.py
# Author: DaShenHan&道长-----先苦后甜,任凭晚风拂柳颜------
# Date  : 2022/8/29

import base64
import requests
9
import os
H
hjdhnx 已提交
10
from utils.web import UC_UA,PC_UA
H
hjdhnx 已提交
11

12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
def getPreJs():
    base_path = os.path.dirname(os.path.abspath(os.path.dirname(__file__)))  # 上级目
    lib_path = os.path.join(base_path, f'libs/pre.js')
    with open(lib_path,encoding='utf-8') as f:
        code = f.read()
    return code

def getCryptoJS():
    base_path = os.path.dirname(os.path.abspath(os.path.dirname(__file__)))  # 上级目
    os.makedirs(os.path.join(base_path, f'libs'), exist_ok=True)
    lib_path = os.path.join(base_path, f'libs/crypto-hiker.js')
    # print('加密库地址:', lib_path)
    if not os.path.exists(lib_path):
        return 'undefiend'
    with open(lib_path,encoding='utf-8') as f:
        code = f.read()
    return code

H
hjdhnx 已提交
30 31 32 33 34 35
def base64Encode(text):
    return base64.b64encode(text.encode("utf8")).decode("utf-8") #base64编码

def baseDecode(text):
    return base64.b64decode(text).decode("utf-8") #base64解码

H
hjdhnx 已提交
36 37 38
def dealObj(obj=None):
    if not obj:
        obj = {}
H
hjdhnx 已提交
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
    encoding = obj.get('encoding') or 'utf-8'
    encoding = str(encoding).replace("'", "")
    # print(type(url),url)
    # headers = dict(obj.get('headers')) if obj.get('headers') else {}
    # headers = obj.get('headers').to_dict() if obj.get('headers') else {}
    headers = obj.get('headers') if obj.get('headers') else {}
    new_headers = {}
    # print(type(headers),headers)
    for i in headers:
        new_headers[str(i).replace("'", "")] = str(headers[i]).replace("'", "")
    # print(type(new_headers), new_headers)

    timeout = float(obj.get('timeout').to_int()) if obj.get('timeout') else None
    # print(type(timeout), timeout)
    body = obj.get('body') if obj.get('body') else {}
    new_body = {}
    for i in body:
        new_body[str(i).replace("'", "")] = str(body[i]).replace("'", "")
H
hjdhnx 已提交
57 58 59 60 61 62 63 64 65 66 67 68
    return {
        'encoding':encoding,
        'headers':new_headers,
        'timeout':timeout,
        'body': new_body,
    }

def base_request(url,obj,method=None):
    url = str(url).replace("'", "")
    if not method:
        method = 'get'
    # print(obj)
H
hjdhnx 已提交
69
    print(f'{method}:{url}')
H
hjdhnx 已提交
70 71 72
    try:
        # r = requests.get(url, headers=headers, params=body, timeout=timeout)
        if method.lower() == 'get':
H
hjdhnx 已提交
73
            r = requests.get(url, headers=obj['headers'], params=obj['body'], timeout=obj['timeout'])
H
hjdhnx 已提交
74
        else:
H
hjdhnx 已提交
75
            r = requests.post(url, headers=obj['headers'], data=obj['body'], timeout=obj['timeout'])
H
hjdhnx 已提交
76 77 78
        # r = requests.get(url, timeout=timeout)
        # r = requests.get(url)
        # print(encoding)
H
hjdhnx 已提交
79
        r.encoding = obj['encoding']
H
hjdhnx 已提交
80 81 82 83 84 85
        # print(f'源码:{r.text}')
        return r.text
    except Exception as e:
        print(f'{method}请求发生错误:{e}')
        return ''

H
hjdhnx 已提交
86 87 88 89
def fetch(url,obj,method=None):
    if not method:
        method = 'get'
    obj = dealObj(obj)
H
hjdhnx 已提交
90 91 92
    # print(f'{method}:{url}')
    if not obj.get('headers') or not obj['headers'].get('User-Agent'):
        obj['headers']['User-Agent'] = PC_UA
H
hjdhnx 已提交
93
    return base_request(url,obj,method)
H
hjdhnx 已提交
94 95

def post(url,obj):
H
hjdhnx 已提交
96 97 98 99 100 101 102
    obj = dealObj(obj)
    return base_request(url,obj,'post')

def request(url,obj,method=None):
    if not method:
        method = 'get'
    obj = dealObj(obj)
H
hjdhnx 已提交
103
    # print(f'{method}:{url}')
H
hjdhnx 已提交
104 105 106
    if not obj.get('headers') or not obj['headers'].get('User-Agent'):
        obj['headers']['User-Agent'] = UC_UA

H
hjdhnx 已提交
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
    return base_request(url, obj, method)

def buildUrl(url,obj=None):
    url = str(url).replace("'", "")
    if not obj:
        obj = {}
    new_obj = {}
    for i in obj:
        new_obj[str(i).replace("'", "")] = str(obj[i]).replace("'", "")
    if not str(url).endswith('?'):
        url = str(url) + '?'
    prs = '&'.join([f'{i}={obj[i]}' for i in obj])
    url = (url + prs).replace('"','').replace("'",'')
    # print(url)
    return url