encode.py 3.3 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
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
def dealObj(obj):
H
hjdhnx 已提交
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
    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 已提交
55 56 57 58 59 60 61 62 63 64 65 66
    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 已提交
67 68 69
    try:
        # r = requests.get(url, headers=headers, params=body, timeout=timeout)
        if method.lower() == 'get':
H
hjdhnx 已提交
70
            r = requests.get(url, headers=obj['headers'], params=obj['body'], timeout=obj['timeout'])
H
hjdhnx 已提交
71
        else:
H
hjdhnx 已提交
72
            r = requests.post(url, headers=obj['headers'], data=obj['body'], timeout=obj['timeout'])
H
hjdhnx 已提交
73 74 75
        # r = requests.get(url, timeout=timeout)
        # r = requests.get(url)
        # print(encoding)
H
hjdhnx 已提交
76
        r.encoding = obj['encoding']
H
hjdhnx 已提交
77 78 79 80 81 82
        # print(f'源码:{r.text}')
        return r.text
    except Exception as e:
        print(f'{method}请求发生错误:{e}')
        return ''

H
hjdhnx 已提交
83 84 85 86 87 88
def fetch(url,obj,method=None):
    if not method:
        method = 'get'
    obj = dealObj(obj)
    print(method)
    return base_request(url,obj,method)
H
hjdhnx 已提交
89 90

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

def request(url,obj,method=None):
    if not method:
        method = 'get'
    obj = dealObj(obj)
    if not obj.get('headers') or not obj['headers'].get('User-Agent'):
        obj['headers']['User-Agent'] = UC_UA

    return base_request(url, obj, method)