当前位置: 首页 > news >正文

【PYTHON】模拟请求接口

【PYTHON】模拟请求接口

      • 1. 如果是请求https,请加上verify=False
      • 2. header中的中横线问题,需要修改为数字键盘上的-,否则会报错
      • 3. 请求代码
      • 4. verify设置本地证书

1. 如果是请求https,请加上verify=False

2. header中的中横线问题,需要修改为数字键盘上的-,否则会报错

UnicodeEncodeError:'ascii'codec can't encode character '\u2011'inposition7: ordinal notinrange(128)

可以使用如下函数找出异常字符

defscan_all_headers(headers:dict):"""扫描headers字典,找出key和value中所有非ASCII字符"""forkey,valinheaders.items():# 扫描 key(重点!本次报错就在key)forpos,charinenumerate(key):iford(char)>127:print(f"\n>>> 异常在【Header Key】")print(f"key完整字符串:{repr(key)}")print(f"位置pos={pos}字符={repr(char)}ord={ord(char)}")# 扫描 values_val=str(val)forpos,charinenumerate(s_val):iford(char)>127:print(f"\n>>> 异常在【Header Value】key={key}")print(f"value片段:{repr(s_val[:80])}")print(f"位置pos={pos}字符={repr(char)}ord={ord(char)}")

3. 请求代码

defget_call_sno():driver=connect_chrome()driver.get("https://xxxxx/")time.sleep(4)# 获取selenium浏览器全部cookiecookies=driver.get_cookies()# 方式A:转成requests可以直接用的cookies字典req_cookies={}forckincookies:req_cookies[ck["name"]]=ck["value"]# 方式B:拼接Cookie请求头字符串(有些接口只认header里的Cookie)cookie_header="; ".join(f"{c['name']}={c['value']}"forcincookies)# ==========2. requests发起POST请求 ==========now=datetime.now()requestdate=now.strftime("%Y%m%d")ts_ms=int(time.time()*1000)url_post=f"xxxxx&_t={ts_ms}"print(url_post)headers_raw={"accept":'application/json, text/javascript, */*; q=0.01',"accept-encoding":'gzip, deflate, br, zstd',"accept-language":'zh-CN,zh;q=0.9',"Cookie":cookie_header,"Content-Type":"text/plain; charset=UTF-8","host":"xxxxx","origin":"https://xxxxx/","referer":"text/plain; charset=UTF-8","sec-ch-ua":'"Chromium";v="134", "Not:A-Brand";v="24", "Google Chrome";v="134"'}scan_all_headers(headers_raw)# exit(0)headers=clean_header_dict(headers_raw)data='{xxxxxxx}'# 这样做的目的是为了避免:SyntaxError: f-string: expressions nested too deeplypost_data_str=data.replace("20260817",requestdate)resp=requests.post(url_post,data=post_data_str,cookies=req_cookies,# 二选一,传cookies字典headers=headers_raw,timeout=15,verify=False)print("状态码",resp.status_code)data=json.loads(resp.text)# print("返回内容", resp.text)sno=data.get("xx")[0].get("xx")[0][0].get("xx")returnf"{sno}"

4. verify设置本地证书

从浏览器中导出证书,选择详细信息-选择最底层证书-导出-选择证书链-修改crt格式为pem格式,然后使用如下代码使用证书请求

resp=requests.post(url_post,data=redata,# cookies=req_cookies, # 二选一,传cookies字典headers=headers_raw,timeout=15,verify=r"D:\pythonauto\chromeDriver\xxx.pem")
http://www.cnnetsun.cn/news/4281184.html

相关文章:

  • ROS2机器人建模仿真实战:从URDF到Gazebo的完整链路
  • MySQL安装与Navicat连接指南:破解版风险与免费替代方案
  • 数学建模竞赛中MATLAB微分方程符号解实战:从dsolve使用到论文写作
  • WinForm集成PaddleOCR v3:ONNX Runtime C#部署实战
  • 单片机毕业设计-语音识别与红外满溢检测智能垃圾分类装置研发 基于 LU-ASR01 的四分类智能垃圾桶硬件系统设计(013105)
  • Yolo 小白入门 29:训练前先验货——用可视化揪出错框、错类和空标签
  • 单片机毕业设计-基于 STM32 的便携式人体健康监测终端及 APP 开发 基于 STM32 的多生理信号采集与声光报警系统设计(013205)
  • 仿WX即时聊天源码深度拆解:架构、消息链路与音视频部署
  • CIMPro 孪大师分层开发实战:从零代码速建到深度定制的全场景指南
  • 工业自动化通信基石:Profinet GSD文件深度解析与汇川SV660F配置实战
  • ESP32 DAC音频输出实战:从硬件设计到软件驱动的完整指南
  • Agentic 工作流重塑出行预测:多智能体协同与多模态大模型的深度实践
  • Java面经:从八股到实战,复盘面试官真正在考什么
  • GPT-6传闻下的OpenAI API接入实战指南
  • 代码跑通之后怎么提升?模型改进、损失函数调优与实验管理完整指南
  • OpenAI高管离职潮背后:技术路线、AI安全与组织治理的深层博弈
  • OpenClaw部署实战:从安装到本地模型与Skill开发
  • 没有眼睛的AI,为什么能教你怎么戴美瞳?大模型知识表征与能力边界解析
  • QT实现视觉引导机械臂闭环抓取的工程实践
  • GLM-5.2登陆Mistral平台:模型托管与API接入工程实践指南
  • 留学生求职服务机构可信度评估研究 ——基于可验证资质的实证分析
  • 2027北京机器人展聚焦机器人出海合规,助力国产装备走向全球
  • Java工程师能力评估指南:从HashMap到JVM,面试官视角的实战自查清单
  • Windows 0xC0000142 启动失败怎么修?先查出错模块,再用软领DLL系统修复运行库
  • 多模态模型Diffing:表征差异分析与特征控制实战
  • MSK+LDPC+扩频通信链路仿真:参数耦合与工程落地详解
  • ISO15118协议Schema文件包本地化实践:解决网络依赖与开发集成
  • 基于SpringBoot+DeepSeek的智能康养助手的设计与实现(源码+文档+部署+讲解)
  • 前端模块化:CommonJS 和 ES Module 到底有什么区别?
  • 为什么说提示词是决定视频质量的天花板