php网站开发需要学哪些网站制作算什么费用

张小明 2025/12/29 2:15:35
php网站开发需要学哪些,网站制作算什么费用,企业查询国家官网,中国科技成就作文800字一、引言#xff1a;验证码#xff0c;网络安全的第一道防线 在网络应用中#xff0c;验证码是防止自动化攻击的重要手段。12306作为中国铁路售票系统#xff0c;其验证码设计尤为复杂#xff0c;从早期的数字字母组合#xff0c;到后来的图片点击#xff0c;再到如今的…一、引言验证码网络安全的第一道防线在网络应用中验证码是防止自动化攻击的重要手段。12306作为中国铁路售票系统其验证码设计尤为复杂从早期的数字字母组合到后来的图片点击再到如今的智能验证一直在与自动化脚本进行着军备竞赛。12306抢票项目的验证码处理模块完整实现了从验证码获取、保存到识别的全流程支持手动输入和自动识别两种方式是学习Python验证码处理的绝佳范例。本文将深入分析12306项目的验证码处理逻辑探讨验证码识别的技术要点和实践经验。二、验证码处理流程从获取到识别的完整链路12306项目的验证码处理主要由两个核心文件组成形成了完整的处理链路获取验证码 - 保存图片 - 识别验证码 - 转换坐标 - 提交验证1. 核心文件结构inter/GetPassCodeNewOrderAndLogin.py负责验证码图片的获取与保存inter/GetRandCode.py负责验证码的识别手动/自动和坐标转换三、验证码图片获取与保存GetPassCodeNewOrderAndLogin.py1. 功能实现该模块负责从12306服务器下载验证码图片支持登录和订单两种场景。2. 核心代码解析# -*- codingutf-8 -*-fromconfig.urlConfimporturlsdefgetPassCodeNewOrderAndLogin(session,imgType): 下载验证码 :param session: 会话对象包含HTTP客户端和URL配置 :param imgType: 下载验证码类型login登录验证码其余为订单验证码 :return: 验证码图片二进制数据或False失败时 try:# 根据场景选择对应的URLifimgTypelogin:urlsession.urls[getCodeImg]else:urlsession.urls[codeImgByOrder]# 添加随机数参数防止缓存url{0}?{1}.format(url,r{0}.format(session.httpClint.send(session.urls[randCode])))# 发送请求获取验证码responsesession.httpClint.opener.open(url,timeout5)resultresponse.read()returnresultexceptExceptionase:print(u获取验证码失败: {0}.format(e))returnFalse3. 技术要点动态URL生成根据场景登录/订单选择不同的验证码URL防缓存机制添加随机数参数确保每次获取的都是最新验证码会话保持使用会话对象的HTTP客户端保持登录状态异常处理捕获网络异常确保系统稳定性四、验证码识别GetRandCode.py的双重实现1. 功能实现该模块实现了验证码的识别功能支持手动输入和自动识别两种方式并将识别结果转换为12306服务器要求的坐标格式。2. 核心代码解析2.1 验证码识别主函数# -*- codingutf-8 -*-fromPILimportImagefromconfig.ticketConfimport_get_yamlfromdamatuCode.ruokuaiimportRClienttry:raw_input# Python 2exceptNameError:# Python 3raw_inputinputdefgetRandCode(is_auto_code,auto_code_type,result): 识别验证码 :param is_auto_code: 是否自动识别 :param auto_code_type: 自动识别类型1:打码兔2:若快 :param result: 验证码图片二进制数据 :return: 验证码坐标字符串或空字符串失败时 try:# 保存验证码图片到文件try:withopen(./tkcode.png,wb)asimg:img.write(result)print(u验证码图片已成功保存到 ./tkcode.png)exceptExceptionase:print(u保存验证码图片失败: {0}.format(e))returnifis_auto_code:# 自动识别逻辑ifauto_code_type1:print(u打码兔已关闭, 如需使用自动识别请使用若快平台 auto_code_type 2)returnifauto_code_type2:# 调用若快打码平台APIrcRClient(_get_yaml()[auto_code_account][user],_get_yaml()[auto_code_account][pwd])Resultrc.rk_create(result,6113)# 6113是12306验证码类型ifResultinResult:returncodexy(Ofset,.join(list(Result[Result])),is_raw_inputFalse)else:ifErrorinResultandResult[Error]:print(u打码平台错误: {0}, 请登录打码平台查看-http://www.ruokuai.com/client/index?6726.format(Result[Error]))returnelse:# 手动输入逻辑try:# 尝试打开验证码图片imgImage.open(./tkcode.png)print(u正在打开验证码图片...)img.show()print(u验证码图片已打开请查看并输入)exceptExceptionase:print(u打开验证码图片失败: {0}.format(e))print(u请手动双击根目录下的 tkcode.png 文件查看验证码)# 调用手动输入函数returncodexy()exceptExceptionase:print(u验证码处理异常: {0}.format(e))importtraceback traceback.print_exc()return2.2 坐标转换函数defcodexy(OfsetNone,is_raw_inputTrue): 获取验证码坐标 :param Ofset: 自动识别结果或None手动输入时 :param is_raw_input: 是否手动输入 :return: 验证码坐标字符串 ifis_raw_input:# 显示坐标提示print(u ***************** | 1 | 2 | 3 | 4 | ***************** | 5 | 6 | 7 | 8 | ***************** )print(u验证码分为8个对应上面数字例如第一和第二张输入1, 2)print(u如果是linux无图形界面请使用自动打码is_auto_code: True)print(u如果没有弹出验证码请手动双击根目录下的tkcode.png文件)Ofsetraw_input(u输入对应的验证码: )# 标准化输入格式OfsetOfset.replace(,,)selectOfset.split(,)# 坐标映射post[]offsetsX0# X坐标offsetsY0# Y坐标forofsetinselect:ifofset1:offsetsY77offsetsX40elifofset2:offsetsY77offsetsX112elifofset3:offsetsY77offsetsX184elifofset4:offsetsY77offsetsX256elifofset5:offsetsY149offsetsX40elifofset6:offsetsY149offsetsX112elifofset7:offsetsY149offsetsX184elifofset8:offsetsY149offsetsX256else:passpost.append(offsetsX)post.append(offsetsY)# 转换为12306要求的坐标格式randCodestr(post).replace(],).replace([,).replace(,).replace( ,)print(u验证码识别坐标为{0}.format(randCode))returnrandCode3. 技术要点PIL/Pillow图像处理用于打开和显示验证码图片文件IO操作将验证码图片保存到本地文件API调用集成若快打码平台API实现自动识别坐标转换将用户输入或API返回的结果转换为12306服务器要求的坐标格式跨Python版本兼容兼容Python 2和Python 3的raw_input/input函数五、手动vs自动验证码处理方式对比处理方式优点缺点适用场景手动输入准确率高、无成本、无需依赖第三方服务效率低、需要人工干预、不适合长时间运行调试阶段、自动识别失败时自动识别效率高、无需人工干预、适合长时间运行需要付费、准确率受平台影响、依赖网络正式抢票、批量操作、无人值守六、验证码识别经验技巧1. 提高手动输入效率的技巧熟悉坐标映射记住8个位置对应的数字减少思考时间快速输入直接输入数字用逗号分隔如1,3,5注意大小写确保输入法在英文状态避免中文逗号2. 优化自动识别的建议选择可靠平台若快平台对12306验证码有专门优化识别率较高保持账号余额充足确保打码平台账号有足够余额避免因余额不足导致识别失败合理设置超时时间根据网络情况调整API调用超时时间添加重试机制自动识别失败时切换到手动模式或重试3. 验证码处理的通用经验保存验证码图片无论自动还是手动识别都建议保存验证码图片便于调试和分析添加异常处理捕获可能出现的各种异常确保系统稳定性日志记录记录验证码处理过程便于排查问题定期更新识别策略随着验证码技术的发展及时更新识别策略七、代码优化建议1. 验证码图片处理优化# 优化前直接保存二进制数据withopen(./tkcode.png,wb)asimg:img.write(result)# 优化后添加图片验证和压缩fromPILimportImagefromioimportBytesIOtry:# 验证图片完整性imgImage.open(BytesIO(result))img.verify()# 重新打开并保存可选择压缩imgImage.open(BytesIO(result))img.save(./tkcode.png,optimizeTrue,quality90)print(u验证码图片已成功保存到 ./tkcode.png)exceptExceptionase:print(u验证码图片无效: {0}.format(e))return2. 自动识别重试机制# 优化前单次调用Resultrc.rk_create(result,6113)# 优化后添加重试机制max_retries3foriinrange(max_retries):try:Resultrc.rk_create(result,6113)ifResultinResult:returncodexy(Ofset,.join(list(Result[Result])),is_raw_inputFalse)exceptExceptionase:print(u自动识别重试 {0}/{1} 失败: {2}.format(i1,max_retries,e))time.sleep(1)3. 验证码坐标映射优化# 优化前多个if-elif分支ifofset1:offsetsY77offsetsX40# ... 其他分支# 优化后使用字典映射更简洁高效coord_map{1:(40,77),2:(112,77),3:(184,77),4:(256,77),5:(40,149),6:(112,149),7:(184,149),8:(256,149)}ifofsetincoord_map:offsetsX,offsetsYcoord_map[ofset]八、结语验证码处理的技术演进12306项目的验证码处理模块展示了Python在验证码处理方面的强大能力从图片获取、保存到识别、坐标转换形成了完整的处理链路。通过学习这个项目我们可以掌握以下核心技术PIL/Pillow图像处理图片的打开、显示和保存文件IO操作二进制文件的读写API调用第三方服务的集成和调用用户交互设计友好的用户提示和输入处理异常处理提高系统稳定性的关键随着AI技术的发展验证码识别技术也在不断演进从早期的OCR识别到如今的深度学习模型识别准确率不断提高。然而12306的验证码也在不断升级从简单的图片点击到如今的多轮验证形成了一场持续的攻防战。对于开发者来说掌握验证码处理的核心技术不仅可以应对12306这样的特定场景还可以将这些技术应用到其他需要验证码处理的场景中。无论是手动输入还是自动识别关键是根据实际需求选择合适的处理方式并不断优化和改进。希望本文对你理解Python验证码处理有所帮助祝你在验证码处理的道路上越走越远参考资料12306抢票项目源码Python PIL/Pillow官方文档若快打码平台API文档
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

南山的网站建设wordpress自定义首页

写了有点久,基本都写得oiwiki上的但自认为写的更好(至少对于我自己的理解来说) 定义基础 排列 从 \(n\) 个元素中考虑顺序地选出 \(k\) 个元素的方案数,写作 \(A_n^k\)。 显然: \[A_n^k \frac{n!}{(n - k)!} \]圆上排列 一个长度为 \(n\) 的…

张小明 2025/12/23 5:41:05 网站建设

网站前台的实现建立大型网站

如何用1个开源工具搞定全平台标签打印?LPrint终极指南 【免费下载链接】lprint A Label Printer Application 项目地址: https://gitcode.com/gh_mirrors/lp/lprint 在数字化办公时代,跨平台标签打印一直是企业和个人用户面临的痛点。无论是Windo…

张小明 2025/12/23 5:38:59 网站建设

营销型网站设计案例crm免费

Hermes引擎深度解析:从架构设计到性能优化的完整实战指南 【免费下载链接】hermes A JavaScript engine optimized for running React Native. 项目地址: https://gitcode.com/gh_mirrors/hermes/hermes Hermes引擎作为Facebook专为React Native打造的高性能…

张小明 2025/12/23 5:37:56 网站建设

国外html5网站快速建设网站服务

Docker 镜像存储、分发与容器管理全解析 1. 推送自定义镜像到 Docker Hub 在将自定义镜像推送到 Docker Hub 时,要确保不包含不想公开的代码、文件或环境变量。具体操作步骤如下: 1. 登录 Docker Hub :运行以下命令将本地 Docker 客户端与 Docker Hub 关联: $ docke…

张小明 2025/12/23 5:35:52 网站建设

易县网站建设个体可以做几个网站

STM32-S347-双轴追光风能太阳能光敏灯光锂电池电压电量充电电压2电机OLED屏手动自动升压按键(无线方式选择)产品功能描述:本系统由STM32F103C8T6单片机核心板、OLED屏、(无线蓝牙/无线WIFI/无线视频监控/联网云平台模块-可选)、太阳能电池板、…

张小明 2025/12/23 5:34:49 网站建设