2020-08-13 同花顺证书批量下载

exe下载地址
https://github.com/realhanlin/WorkRepo.git

0 背景

同花顺公司后台服务需要授权证书文件方可正常运行。
交易主站3个证书,行情2个证书,接入主站4个证书,所有服务器会涉及200+证书。官方无批量下载功能,遂编写此工具。V1.* python2版本已废弃,V2为2020年python3版本。

1 思路

1.1 找到下载链接

证书下载网站如下
http://services.myhexin.com/produser/querycert
经过F12调试分析,得出下载链接如下:
http://services.myhexin.com/produser/downloadcert?libver=20030506&authcode=M11-ics3-JqUK-0Lab-%2FwIY-HTRL&Submit=%CF%C2%D4%D8%D6%A4%CA%E9

1.2 分析出各个入参

    url_base = 'http://services.myhexin.com/produser/downloadcert'
    url_data = {"libver": '20030506',
                "authcode": 'M11-ics3-JqUK-0Lab-/wIY-HTRL',
                "Submit": '下载证书'}

1.3 json保存编码信息,urllib下载证书

通过json文件保存IP和证书编码列表,然后用自写的ThsCertSave类下载证书到如下目录中


2020-08-13 同花顺证书批量下载_第1张图片
image.png

2 附录

2.1 py脚本

#!/usr/bin/python
# Download ths cert files
# Ver 2.0
# Edit By hanlin @Beijing

import os
import json
import urllib
from urllib.request import urlopen
from urllib.request import Request
from urllib.parse import urlencode
from urllib.parse import quote

class ThsCertSave:
    path = ''
    ip = ''
    codelist = []
    url_base = ''
    url_data = ''
    def __init__(self,path,ip,codelist,url_base,url_data):
        self.path = path
        self.ip = ip
        self.codelist = codelist
        self.url_base = url_base
        self.url_data = url_data
    def __createPathName(self,code):
        file_name = code.split('-')[0] + '.dat'
        if not os.path.exists(self.path + self.ip):
            os.makedirs(self.path + self.ip)
        path_file = self.path + self.ip + '/' + file_name
        return path_file
    def __iUrlEncode(self,code):
        # special process for Chinese Char
        data_cn = self.url_data["Submit"].encode('gb2312')
        data_cn = quote(data_cn)
        self.url_data["Submit"] = '123'
        req_data = urlencode(self.url_data)
        req_data = req_data.replace('123', data_cn)
        iurl = self.url_base + '?' + req_data
        return iurl

    def save(self):
        for code in self.codelist:
            path_file = self.__createPathName(code)
            iurl = self.__iUrlEncode(code)
            res = urlopen(iurl)
            with open(path_file,"wb") as mydat:
                mydat.write(res.read())
                print('Saving: '+path_file)

def main():
    path = './download/'
    url_base = 'http://services.myhexin.com/produser/downloadcert'
    url_data = {"libver": '20030506',
                "authcode": 'M11-ics3-JqUK-0Lab-/wIY-HTRL',
                "Submit": '下载证书'}
    #is_json = is_json.is_json('ths.json')
    with open('ths.json', 'r') as f:
        ths_data = json.load(f)

    ip_list = ths_data.keys()
    for ip in ip_list:
        isave = ThsCertSave(path,ip,ths_data[ip],url_base,url_data)
        isave.save()

if __name__ == "__main__":
    main()

2.2 json文件

{
    "172.1.100.48":["M11-ics3-JqUK-****-/wIY-HTRL","M21-ics3-***-0Lab-/wIY-HTRL","M31-***-JqUK-0Lab-/wIY-HTRL","M41-ics3-***-0Lab-/wIY-HTRL"],
    "172.1.100.57":["E11-HEzV-****-2k+o-ZchK-Wlab"],
    "172.1.100.69":["E11-****-wUIc-+u8P-OSS6-jtMg","E21-KY6o-wUIc-+****-OSS6-jtMg"]
}

pyinstaller-develop打包exe文件: python pyinstaller.py -F --icon="me.ico" demo.py

你可能感兴趣的:(2020-08-13 同花顺证书批量下载)