卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章11201本站已运行3223

[Python 原创] headers的解析


'''
decs:headers 解析
date:2023年3月3日
author:话痨司机啊
---------------------------------
#### ex:
Accept-Ranges: bytes
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: X-Log, X-Reqid
Access-Control-Max-Age: 2592000
Age: 32250
Cache-Control: public, max-age=31536000
Content-Disposition: inline; filename="simditor.min.css"; filename*=utf-8''simditor.min.css
Content-Encoding: gzip
Content-Transfer-Encoding: binary
Content-Type: text/css
Date: Wed, 01 Mar 2023 15:44:44 GMT
ETag: "Fq0k2xlUKeux0jOY_wLkd036Cer2"
Last-Modified: Sun, 12 Feb 2017 15:33:30 GMT
Ohc-Cache-HIT: hg2un62 [2], wzix97 [2]
Ohc-File-Size: 10362
Ohc-Global-Saved-Time: Wed, 01 Mar 2023 06:46:26 GMT
Server: JSP3/2.0.14
Timing-Allow-Origin: *
Vary: Accept-Encoding
X-Cache-Status: HIT
X-Log: X-Log
X-Qiniu-Zone: 0
X-Reqid: S3YAAABJe5U9j_oW
X-Svr: IO
 
### ofter(dict):
{   'Accept-Ranges':'bytes',
    'Access-Control-Allow-Origin':'*',
    ...
}
----------------------------------
'''
 
import json
from pathlib import Path
 
class ParseHeader():
    def __init__(self,str_headers:list,sign:bool):
        self.str_headers = str_headers
        self.headers = {}
        self.pares_headers()
        if sign:self.save_file
        self.out_print()
         
    def pares_headers(self):
        for str_line in self.str_headers:
            k,v = str_line.strip().split(':',1)
            self.headers[k.strip()] = v.strip().replace('"',"'")
 
    def save_file(self):
        with open('headers_dict.txt','w',encoding='utf8') as f:
            f.write(json.dumps(self.headers))
 
    def out_print(self):
        print(self.headers)
 
 
def check_print():
    print('说明:选择1在命令行下粘贴headers,选择2,请在(h.txt)文件中粘贴headers:')
    print('-'*60)
    print('请选择1 or 2!:')
    wrtie_in = input()
    assert wrtie_in
    return int(wrtie_in)
 
def init_print_and_run(num_int,try_num=3):
    if try_num>=0:
        if num_int == 1:
            headers = input('请输入headers:')
            headers_list = headers.splitlines()
            yn = input('是否将其保存为文件headers_dict.txt(Y/N)')
            if yn.lower() == 'y' and len(yn.lower())>0:
                ParseHeader(headers_list,True)
            elif yn.lower() == 'n' and len(yn.lower())>0:
                ParseHeader(headers_list,False)
            else:
                init_print_and_run(try_num-1)
        elif num_int ==2:
            filename = 'h.txt'
            with open(filename,'w+',encoding='utf8') as f:
                read_list = f.readlines()
                if len(read_list)>0:
                    yn = input('是否将其保存为文件headers_dict.txt(Y/N)')
                    if yn.lower() == 'y' and isinstance(yn,str):
                        ParseHeader(headers_list,True)
                    elif yn.lower() == 'n' and isinstance(yn,str):
                        ParseHeader(headers_list,False)
                    else:
                        init_print_and_run(try_num-1)
                else:
                    f.write(' ')
                    raise ValueError('请输入headers后再运行此程序')
    else:
        print('重试次数已用尽,请重新运行!')
 
def main():
    num = check_print()
    if num == 1 or num ==2:
         init_print_and_run(num)
    else:
         print('输入数字错误’)
 
if __name__ == "__main__":
    main()
卓越飞翔博客
上一篇: 个人收款码、赞赏码实现免签约微信支付接口原理+源码
下一篇: Linux云服务器一键搭建自用FTP脚本
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏