python pycookiecheat库使用

pycookiecheat库是一个用于读取和导出浏览器cookie的实用工具。它可以帮助你访问浏览器中存储的cookie数据,并在需要时将其用于进行HTTP请求。该库支持Chrome和Firefox浏览器。安装命令如下:

pip/pip3 install pycookiecheat

使用示例:使用pycookiecheat获取chrome浏览器nps平台和cmdb平台的cookie数据,然后进行http请求查询平台数据:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
 @FileName:    nps.py
 @Function:    operating nps platform
 @Author:      Zhihe An
 @Contact:     anzhihe@chegva.com
 @Time:        2023/6/8
"""

import requests
import json
import sys
import platform
import prettytable as pt
from pycookiecheat import chrome_cookies
import argparse

class ServiceInterface:
    """调用平台接口"""

    def __init__(self, vehicle_number = None):

        self.vehicle_number = vehicle_number

    def get_nps_info(self, url = None):
        """查询车辆nps信息"""
        nps_cookies = chrome_cookies('http://nps.chegva.com')
        #print(nps_cookies)

        # cookies = {
        #     'access_token': 'anzhihe_89e50344a07442111171c4a5f3',
        #     'jwt_token': 'eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjoxMDM5LCJ1YW1fdG9rZW4iOiJhbnpoaWhlXzg5ZTUwMzQ0YTA3NDQyNDM5YTFkZGNlYjcxYzRhNWYzIiwidXNlcm5hbWUiOiJhbnpoaWhlIn0.M17TZYaxMLFhemNuUBzQGI4MLydAN1wMNwhDhhBAiqb5cbZSpFKlIqbpcaep0QNn3nph9t14EkEVoETrloqf1g',
        #     'lang': 'zh-CN',
        #     'beegosessionID': 'b2a2a4feaa58fa38bed4a43aa9aa4a3d',
        # }

        headers = {
            'Accept': 'application/json, text/javascript, */*; q=0.01',
            'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7',
            'Cache-Control': 'no-cache',
            'Connection': 'keep-alive',
            'Origin': 'http://nps.chegva.com:10086',
            'Pragma': 'no-cache',
            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
        }

        data = {
            'search': self.vehicle_number,
            'order': 'asc',
            'offset': '0',
            'limit': '10',
        }

        resp_vehicle = requests.post('http://nps.chegva.com:10086/client/list', cookies=nps_cookies, headers=headers,
                                 data=data, verify=False)
        vehicle_info = json.loads(resp_vehicle.text)
        yk_table_header = ['ID', '域控', '验证密钥', '连接', '端口映射', 'Mac']
        yk_table = make_table(yk_table_header, align='c', width=2)

        for veh in vehicle_info["rows"]:

            data_yk = {
                'offset': '0',
                'limit': '10',
                'type': '',
                'client_id': veh["Id"],
                'search': '',
            }

            resp_yk = requests.post('http://nps.chegva.com:10086/index/gettunnel', cookies=nps_cookies, headers=headers,
                                     data=data_yk, verify=False)
            yk_info = json.loads(resp_yk.text)

            macs = []
            port_maps = []
            for yk in yk_info["rows"]:
                port_mapping = str(yk["Port"]) + ":" + yk["Target"]["TargetStr"]
                port_maps.append(port_mapping)
                if yk["Mac"]:
                    macs.append(yk["Mac"])

            online_status = "在线" if veh["IsConnect"] else "离线"
            yk_table.add_row([veh["Id"], veh["Remark"], veh["VerifyKey"], online_status, "\n".join('%s' %port for port in port_maps), "\n".join('%s' %mac for mac in macs)]) # divider=True 给每行添加分隔线

        print(yk_table)

        # cmdb查询信息

        cmdb_cookies = chrome_cookies('https://cmdb.chegva.com/api/data/list')
        # print(cmdb_cookies)

        cmdb_query_data = {
            'params': {
                'pageNum': 1,
                'pageSize': 10,
            },
            'modelId': 1,
            'searchKey': 'number_plate',
            'searchVal': self.vehicle_number,
        }

        cmdb_headers = {
            'authority': 'cmdb.chegva.com',
            'accept': 'application/json, text/plain, */*',
            'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7',
            'cache-control': 'no-cache',
            'origin': 'https://cmdb.chegva.com',
            'pragma': 'no-cache',
            'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
        }

        resp_cmdb_vehicle = requests.post('https://cmdb.chegva.com/api/data/list', cookies=cmdb_cookies,
                                 headers=cmdb_headers, json=cmdb_query_data)

        cmdb_vehicle_info = json.loads(resp_cmdb_vehicle.text)
        ......
        

def make_table(header, align=None, width=None):
     """Make a table object for output."""

     encoding = "UTF-8" if platform.system().lower() in ('linux', 'darwin') else "GBK"
     table = pt.PrettyTable(encoding=encoding, field_names=header, align=align)
     table.padding_width = width
     return table

def parse_args(argv):

     p = argparse.ArgumentParser(description="Call Service Platform Interfaces. <author: anzhihe@chegva.com>")
     p.add_argument("--vehicle_number", "-nps", metavar="[veh1,veh2,veh3,...]",
                    help="Input vehicle number to query nps information,separate with ','", type=str,
                    action="store")

     if len(sys.argv) == 1:
         p.print_help()
         sys.exit(1)

     args = p.parse_args(argv)
     return args

def main():

    options = parse_args(sys.argv[1:])

    if options.vehicle_number:
        ServiceInterface(options.vehicle_number).get_nps_info()


if __name__ == '__main__':
    main()

在Mac终端上加个函数方便调用脚本:

cat ~/.bash_aliases                                                                                                       01:52:31 
function nps() {
    if [[ "$1" == "-h" || "$1" == "--help" || -z "$1" ]]; then
        arch -arm64 python3 ~/anzhihe/op/scripts/python/nps.py -h 2>/dev/null
    else
        arch -arm64 python3 ~/anzhihe/op/scripts/python/nps.py -nps $1 2>/dev/null
    fi
}


参考:https://pypi.org/project/pycookiecheat/

anzhihe 安志合个人博客,版权所有 丨 如未注明,均为原创 丨 转载请注明转自:https://chegva.com/5868.html | ☆★★每天进步一点点,加油!★★☆ | 

您可能还感兴趣的文章!

发表评论

电子邮件地址不会被公开。 必填项已用*标注