网页优化与网站优wordpress前台访问地址

张小明 2025/12/31 10:25:08
网页优化与网站优,wordpress前台访问地址,全国建筑工程企业资质查询平台,做网站致富一、引言#xff1a;为什么要自定义HTTP客户端#xff1f; 在Python开发中#xff0c;我们常用requests库处理HTTP请求#xff0c;但在某些场景下#xff0c;自定义HTTP客户端更具优势。12306抢票项目作为一个对网络请求有特殊要求的系统#xff0c;选择了自定义HTTPClie…一、引言为什么要自定义HTTP客户端在Python开发中我们常用requests库处理HTTP请求但在某些场景下自定义HTTP客户端更具优势。12306抢票项目作为一个对网络请求有特殊要求的系统选择了自定义HTTPClient类来管理网络请求。本文将深入分析该项目中HTTPClient的实现细节探讨会话管理、Cookie处理等核心功能。二、12306项目中的HTTPClient实现1. 项目目录结构12306项目的HTTP客户端位于myUrllib/httpUtils.py文件中是整个项目的网络核心12306-master/ ├── myUrllib/ │ ├── __init__.py │ └── httpUtils.py # 自定义HTTPClient类 ├── init/ │ ├── login.py # 使用HTTPClient登录 │ └── select_ticket_info.py # 使用HTTPClient查询和下单 └── inter/ └── *.py # 各种接口调用均依赖HTTPClient2. HTTPClient类核心代码# -*- codingutf-8 -*-importurllibimporturllib2importjsonimportrandomimporttimeclassHTTPClient:def__init__(self,is_proxy0): 初始化HTTP客户端 :param is_proxy: 是否使用代理0为不使用1为使用 self.is_proxyis_proxy self.cookies{}# 存储Cookieself._cdn# CDN节点self.headers{# 默认请求头User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36,Content-Type:application/x-www-form-urlencoded; charsetUTF-8,Referer:https://kyfw.12306.cn/otn/login/init,}defsend(self,url,dataNone,methodGET): 发送HTTP请求 :param url: 请求URL :param data: 请求数据GET为NonePOST为字典 :param method: 请求方法GET或POST :return: 响应结果JSON格式 try:# 1. 构建请求ifmethodGET:ifdata:url?urllib.urlencode(data)requrllib2.Request(url,headersself.headers)else:# POSTifdata:dataurllib.urlencode(data)requrllib2.Request(url,datadata,headersself.headers)# 2. 添加Cookieifself.cookies:cookie_str; .join([{}{}.format(k,v)fork,vinself.cookies.items()])req.add_header(Cookie,cookie_str)# 3. 发送请求responseurllib2.urlopen(req,timeout10)# 4. 处理响应contentresponse.read()resultjson.loads(content)ifcontentelse{}# 5. 更新CookieifSet-Cookieinresponse.headers:cookie_headerresponse.headers[Set-Cookie]# 解析并更新Cookieforcookieincookie_header.split(;):ifincookie:key,valuecookie.split(,1)keykey.strip()valuevalue.split(;)[0].strip()ifkey:self.cookies[key]valuereturnresultexceptExceptionase:print(uHTTP请求异常: {}.format(e))return{}defdel_cookies(self):清除所有Cookieself.cookies.clear()defset_cookie(self,key,value): 设置Cookie :param key: Cookie名 :param value: Cookie值 self.cookies[key]value三、核心功能实现解析1. 会话管理与会话保持12306项目通过以下机制实现会话管理Cookie持久化将每次请求的Cookie存储在self.cookies字典中自动Cookie添加发送请求时自动将Cookie添加到请求头中Cookie更新响应中包含新Cookie时自动更新本地存储# 设置Cookieself.set_cookie(SESSIONID,abc123)# 发送请求时自动添加Cookieresponseself.send(https://kyfw.12306.cn/otn/login/checkUser)# Cookie自动更新print(self.cookies)# 包含最新的Cookie2. Cookie处理与登录状态维护登录状态完全依赖Cookie管理登录成功后服务器返回的Cookie会被自动存储后续请求自动携带这些Cookie保持登录状态可通过del_cookies()方法清除登录状态用于重新登录# 登录流程login_resultself.send(https://kyfw.12306.cn/otn/login/loginAysnSuggest,data{username:xxx,password:xxx},methodPOST)# 登录成功后Cookie自动更新iflogin_result.get(result_code)0:print(登录成功Cookie已更新)# 后续请求自动携带登录Cookieuser_infoself.send(https://kyfw.12306.cn/otn/login/getUserInfo)3. 灵活的配置选项代理支持通过is_proxy参数控制是否使用代理CDN支持可设置CDN节点加速请求自定义请求头支持灵活配置请求头四、自定义客户端vs第三方库优势对比特性自定义HTTPClientrequests库性能轻量高效功能丰富但稍重定制性完全可控可根据需求调整封装较深定制困难学习成本高需要理解HTTP底层低API简洁易用12306适配专为12306优化如CDN支持需要额外配置依赖仅依赖标准库需要安装第三方库自定义客户端的核心优势完全可控可根据12306的特殊要求调整请求逻辑轻量级不依赖第三方库减少部署复杂度针对性优化专为12306的API设计如Cookie处理、请求头等易于调试可直接修改源码方便排查问题五、HTTPClient在项目中的应用场景1. 登录流程# init/login.pyclassGoLogin:def__init__(self,session,is_auto_code,auto_code_type):self.sessionsession# ...defbaseLogin(self,user,passwd):登录过程logurlself.session.urls[login]logData{username:user,password:passwd,appid:otn}# 使用HTTPClient发送登录请求tresultself.session.httpClint.send(logurl,logData)# ...2. 余票查询# inter/Query.pydefsendQuery(self):发送余票查询请求# 构建查询参数# ...# 使用HTTPClient发送查询请求resultself.session.httpClint.send(queryUrl,queryData)# 解析查询结果# ...3. 订单提交# inter/SubmitOrderRequest.pydefsendSubmitOrderRequest(self):提交订单请求# 构建订单数据# ...# 使用HTTPClient发送订单请求resultself.session.httpClint.send(orderUrl,orderData,methodPOST)# 处理订单结果# ...六、总结自定义HTTP客户端的价值12306抢票项目的自定义HTTPClient类展示了如何基于Python标准库实现高效、灵活的网络请求管理。通过精心设计的会话管理和Cookie处理机制该客户端能够很好地适应12306的特殊需求。关键技术点回顾会话管理通过Cookie持久化实现会话保持Cookie处理自动解析、存储和发送Cookie灵活配置支持代理、CDN等高级功能轻量级设计仅依赖Python标准库针对性优化专为12306 API设计适用场景自定义HTTP客户端适用于以下场景对网络请求有特殊要求的系统需要深度定制HTTP请求逻辑的场景对性能要求极高的应用不希望引入第三方依赖的项目通过学习12306项目的HTTPClient实现我们可以更好地理解HTTP协议的底层机制掌握会话管理、Cookie处理等核心技术为构建更强大的网络应用打下基础。七、代码优化建议虽然该HTTPClient实现已经满足项目需求但仍有优化空间添加重试机制网络请求失败时自动重试支持HTTPS代理目前仅支持HTTP代理添加请求日志方便调试和监控支持异步请求提高并发处理能力优化Cookie解析更严谨地处理各种Cookie格式以上优化建议可根据实际需求选择性实施进一步提升HTTPClient的性能和可靠性。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

北京正规制作网站公司温州seo网站推广

文章目录 云原生技术全景图谱与学习路径 一、术语大全与层级关系 1. 核心概念层级 2. 详细术语解释 二、技术关系图谱 1. 发展演进关系 2. 技术栈选择决策树 3. 技术组合模式 三、系统化学习路径 阶段1:基础入门(1-2个月) 阶段2:容器编排进阶(2-3个月) 阶段3:生产级运维…

张小明 2025/12/28 22:59:35 网站建设

本溪建设银行网站上海家装十强企业

高级 Perl 编程:正则表达式与函数库深度解析 1. 正则表达式回顾 正则表达式(也称为 regexes 或 regexps)是 Perl 中强大的文本处理工具。在之前的基础学习中,我们掌握了一些基本的正则表达式知识,现在将深入探讨一些“超越基础”的主题。 1.1 贪婪量词 在正则表达式中…

张小明 2025/12/28 22:57:34 网站建设

建个网站怎么做推广沧州哪里可以做网站

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个Java项目,展示内部类的四种类型(成员内部类、局部内部类、匿名内部类和静态内部类)的使用场景和代码示例。要求每种类型至少包含一个完整…

张小明 2025/12/30 5:33:38 网站建设

如何替换网站上的动画深圳做电商平台网站

从零构建智能开发助手:Trae Agent配置即代码实战解析 【免费下载链接】trae-agent Trae 代理是一个基于大型语言模型(LLM)的通用软件开发任务代理。它提供了一个强大的命令行界面(CLI),能够理解自然语言指令…

张小明 2025/12/28 22:53:31 网站建设

iis7.0搭建网站虚拟币 wordpress

第一章:模型下载慢到崩溃?资深AI工程师教你快速获取Open-AutoGLM在部署 Open-AutoGLM 模型时,许多开发者常因官方源下载速度缓慢而耗费大量时间。作为资深AI工程师,掌握高效的模型获取策略至关重要。以下方法可显著提升下载效率&a…

张小明 2025/12/28 22:51:29 网站建设

二级网站内容建设要求吗网站备案 机构需要什么手续

3C制造业快速发展的背景下,产品质量和交付效率成为企业竞争力的核心要素。传统的纸质作业指导书管理方式已难以满足现代制造业对高精度、高稳定性的要求。本文将深入探讨ESOP系统与工业一体机如何通过技术创新,有效解决3C产线作业规范执行的痛点和挑战。…

张小明 2025/12/30 3:28:57 网站建设