恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
【PYTHON】模拟请求接口
首页
资讯中心
/
【PYTHON】模拟请求接口
【PYTHON】模拟请求接口
发布时间:2026/8/29 6:54:02
【PYTHON】模拟请求接口1. 如果是请求https请加上verifyFalse2. header中的中横线问题需要修改为数字键盘上的-否则会报错3. 请求代码4. verify设置本地证书1. 如果是请求https请加上verifyFalse2. header中的中横线问题需要修改为数字键盘上的-否则会报错UnicodeEncodeError:asciicodec cant encode character \u2011inposition7: ordinal notinrange(128)可以使用如下函数找出异常字符defscan_all_headers(headers:dict):扫描headers字典找出key和value中所有非ASCII字符forkey,valinheaders.items():# 扫描 key重点本次报错就在keyforpos,charinenumerate(key):iford(char)127:print(f\n 异常在【Header Key】)print(fkey完整字符串:{repr(key)})print(f位置pos{pos}字符{repr(char)}ord{ord(char)})# 扫描 values_valstr(val)forpos,charinenumerate(s_val):iford(char)127:print(f\n 异常在【Header Value】key{key})print(fvalue片段:{repr(s_val[:80])})print(f位置pos{pos}字符{repr(char)}ord{ord(char)})3. 请求代码defget_call_sno():driverconnect_chrome()driver.get(https://xxxxx/)time.sleep(4)# 获取selenium浏览器全部cookiecookiesdriver.get_cookies()# 方式A转成requests可以直接用的cookies字典req_cookies{}forckincookies:req_cookies[ck[name]]ck[value]# 方式B拼接Cookie请求头字符串有些接口只认header里的Cookiecookie_header; .join(f{c[name]}{c[value]}forcincookies)# 2. requests发起POST请求 nowdatetime.now()requestdatenow.strftime(%Y%m%d)ts_msint(time.time()*1000)url_postfxxxxx_t{ts_ms}print(url_post)headers_raw{accept:application/json, text/javascript, */*; q0.01,accept-encoding:gzip, deflate, br, zstd,accept-language:zh-CN,zh;q0.9,Cookie:cookie_header,Content-Type:text/plain; charsetUTF-8,host:xxxxx,origin:https://xxxxx/,referer:text/plain; charsetUTF-8,sec-ch-ua:Chromium;v134, Not:A-Brand;v24, Google Chrome;v134}scan_all_headers(headers_raw)# exit(0)headersclean_header_dict(headers_raw)data{xxxxxxx}# 这样做的目的是为了避免SyntaxError: f-string: expressions nested too deeplypost_data_strdata.replace(20260817,requestdate)resprequests.post(url_post,datapost_data_str,cookiesreq_cookies,# 二选一传cookies字典headersheaders_raw,timeout15,verifyFalse)print(状态码,resp.status_code)datajson.loads(resp.text)# print(返回内容, resp.text)snodata.get(xx)[0].get(xx)[0][0].get(xx)returnf{sno}4. verify设置本地证书从浏览器中导出证书选择详细信息-选择最底层证书-导出-选择证书链-修改crt格式为pem格式然后使用如下代码使用证书请求resprequests.post(url_post,dataredata,# cookiesreq_cookies, # 二选一传cookies字典headersheaders_raw,timeout15,verifyrD:\pythonauto\chromeDriver\xxx.pem)