12306发起正晚点查询请求

火车正晚点查询小偷 v1.0.1125.rar Hi530火车正晚点查询.NET版(V1.0.1125) 本程序可查询某一特定车站最新的列车出发/到站前后的正晚点信息。 查询结果采用ASP伪静态模式显示,界面简洁!其中引用了“火车正晚点查询接口”,以get方式传入车站编号即可实现查询。 目前,只提供到达广东、湖南两省内40多个主要站点的正晚点数据查询。所涉及的火车站点具体如下: [湖南省] 长沙 株洲 湘潭 衡阳 郴州 岳阳 娄底 怀化 新化 永州 醴陵 耒阳 邵阳 益阳 涟源 吉首 湘乡 溆浦 张家界 常德 [广东省] 广州 广州东 广州北 深圳 深圳西 东莞东 惠州 惠州西 佛山 汕头 韶关 梅州 湛江西 茂名东 清远 潮州 肇庆 英德 阳春 河源 立即下载

以2018年1月25日G73次列车到达长沙南站的正晚点时间查询为例

第一步,去12306官网找到正晚点查询的入口

第二步,Chrome浏览器下F12打开控制台

第三步,按要求填写需要的参数,发起一次请求


第四步,F12控制台的Network分类下有这次发起请求的记录


第五步,双击就可以查询了,看起来那个验证码是前端做的验证


扩展:

下面来解析一下这个请求吧

http://dynamic.12306.cn/mapping/kfxt/zwdcx/LCZWD/cx.jsp?cz=%B3%A4%C9%B3%C4%CF&cc=g73&cxlx=0&rq=2018-01-25&czEn=-E9-95-BF-E6-B2-99-E5-8D-97&tp=1516868331709

可以看到包含以下几个参数:

1.  cz=车站   .....(吐槽一句,我以为这种巨型系统会脱离我这种菜鸟才会用的命名法的).....

我知道这一串 %B3%A4%C9%B3%C4%CF 是 长沙南 的意思,但不知道是哪种编码,我就去站长之家找,UTF-8、Unicode、URL一个个试过去,最后确定是URL编码,解析地址是URL编码解码-站长工具。需要注意的是,这个下拉列表框里选中gb2312。


2. cc=车次   

3. cxlx=0  查询路线?我也不知道,但是试了一下,只有为0或者1才能查到数据,不然就是


4. rq=日期 格式为 2018-01-25

5.czEn=-E9-95-BF-E6-B2-99-E5-8D-97  车站编码?我也不知道,但是这个参数删了会报错


 (2018-01-26更新)测试发现这个参数必须填的,但是各种解码方式都无法解析,顿时感觉人生都灰暗了,我以为是

12306自己的数据字典,就去查看了12306网页的源码,一步一步往下走:

html: 

 <inputtype="button"tabindex="6"class="btn1"value=" 查 询" name="chaxunBtn"id="chaxunBtnId"onClick="chaxunFun()" />

js:

function chaxunFun(){//查询按钮的事件处理

	var resultJsp = document.getElementById("resultJsp");

	showResult(0,1);

	resultJsp.innerHTML = "";

	

	var chezhanInput = document.getElementById("chezhanInId");

	if(chezhanInput.disabled==false){

		if(chezhanInput.value==""){

			alert("错误提示:\n\n请输入车站信息!");

			chezhanInput.focus();

			return;

		}else{

			chezhanInput.value = chezhanInput.value.replace(/\s+/g,"");

		}

	}

	var chechiInput = document.getElementById("chechiInId");

	if(chechiInput.value==""){

		alert("错误提示:\n\n请输入车次信息!");

		chechiInput.focus();

		return;

	}else{

		chechiInput.value = chechiInput.value.replace(/\s+/g,"");

	}



//**** add by hjl 2008-12-23

	var rightcode="";

  for(var i=0;i<spans.length;i++){

     rightcode+=spans[i].innerHTML;               

  }       

  if(document.getElementById("yzm").value!=rightcode){

//stono 90302 start	  



    alert("验证码不正确,请重新输入!");

	document.getElementById("yzm").focus();

    return false;



//stono 90302 end

  }

//************************************************************



	document.getElementById("resultJsp").innerHTML="正在查询,请稍候...";

	//checkCZ();

	fromtoFun();

	

}

function fromtoFun(){//检测车站车次

	var cz=document.getElementById("chezhanInId").value.replace(/\s+/g,"");

	var cc=document.getElementById("chechiInId").value.replace(/\s+/g,"");

	var czEn = encodeURI(cz);//stono 90302

	czEn = czEn.replace(/%/g,"-"); //stono 90302

	var cxlx =0;

	var cxlx0 = document.getElementById("cxlx0");

	if(!cxlx0.checked) cxlx=1;

	var rq= document.getElementById("txt2").value;

	if(cc==""){

		document.getElementById("from2Id").innerHTML="";

		return ;

	}

//	alert('from2.jsp?cz='+cz+'&cc='+cc+'&cxlx='+cxlx+'&rq='+rq+'&czEn='+czEn);

	var tp = new Date().getTime();

	var from2 = new net.ContentLoader('from2.jsp?cz='+cz+'&cc='+cc+'&cxlx='+cxlx+'&rq='+rq+'&czEn='+czEn+'&tp='+tp,fromtoCall);

	

}
var cz=document.getElementById("chezhanInId").value.replace(/\s+/g,"");
var czEn = encodeURI(cz);
核心代码就是这两句啦,但是令我非常不理解的是, 在“cz”这个参数这里,编码格式是GB2312,具体过程是“长沙南”-->以GB2312的格式Urlcode编码-->“%b3%a4%c9%b3%c4%cf”,而在“czEn”这个参数里,编码格式是utf-8,具体过程是“长沙南”-->以utf-8的格式进行Urlcode编码 -->“%e9%95%bf%e6%b2%99%e5%8d%97”-->将“%”替换为“-” 。

6. tp=timestamp  时间戳,至于为什么取前后两个字母,大概是心情命名法吧,这里也有转码地址时间戳转换地址-站长工具。

这个参数乱填一个数字甚至不填也可以请求到,应该是用于统计分析?

那么要发起一个正晚点查询的请求只要在URL地址   http://dynamic.12306.cn/mapping/kfxt/zwdcx/LCZWD/cx.jsp?    后面拼接需要的参数就行了,至于用途,大概就是有时候列车晚点的时候能方便一点查询到晚点信息而不用每次去12306输验证码查询了吧

总结:学到了什么

1. JS encodeURI      replace 函数的使用

2.  从F12的控制台可以获取到很多信息,比如这篇文章用到的网路请求地址,参数

3. 看起来很厉害的网站其实慢慢看下去也能看懂

4. 命名真的要规范化,不然就会像12306这样,查询=chaxun()

5. 学点东西心情会变好

6. 感兴趣的事值得深究

扩展练习:写一个简单的html页面,要求包含12306正晚点查询的功能

火车查询API 用于网页中火车站查询系统与中国铁路信息网进行API接口。 立即下载

相关推荐

火车正晚点查询小偷 v1.0.1125

Hi530火车正晚点查询.NET版(V1.0.1125) 本程序可查询某一特定车站最新的列车出发/到站前后的正晚点信息。 查询结果采用ASP伪静态模式显示,界面简洁!其中引用了“火车正晚点查询接口

火车车次经停站点查询免费 API 接口详解

该接口用于查询指定火车车次的详细经停站点信息,包括各站点名称、到达/发车时间、停靠时长等。需配合余票查询接口获取车次唯一编号(​:GET 或 POST。

apihz的博客 1510

高通camx架构学习(零)—— 深入理解Camera 硬件抽象层

从上面的定义可以看出,主要是通过hw_module_t 代表了模块,通过其open方法用来打开一个设备,而该设备是用hw_device_t来表示,其中除了用来关闭设备的close方法外,并无其它方法,由此可见谷歌定义的HAL接口,并不能满足绝大部分HAL模块的需要,所以谷歌想出了一个比较好的解决方式,那便是将这两个基本结构嵌入到更大的结构体内部,同时在更大的结构内部定义了各自模块特有的方法,用于实现模块的功能,这样,一来对上保持了HAL的统一规范,二来也扩展了模块的功能。

图像学习之旅 1668

小白教程:Python爬取12306车票信息以及后期数据处理

1.确定数据源(12306) 步骤一:寻找想爬取数据的来源网站(即12306),直接进入官网就可以了https://kyfw.12306.cn 步骤二:因为我们是爬取车票信息,所以直接点击单程车票查询就可了 步骤三:F12启动chrome开发者模式,然后按照下面图片里的步骤操作 步骤四: 然后就会发现一个请求,接下来,我们点击这条请求,查看请求信息,可以发现包括Headers,Proview,Responsr,Cookies,Timing等信息,以及GET请求的url 下面是请求网络路径(url),经过

m0_47298749的博客 1万+

公文派2025:免费社区版重大安装更新!

距离上一次更新已经过去了将近一年的时间,今天我们带来了全新的免费2025社区版,该版本也是目前最新的版本,无需授权即可使用所有的功能。

似最初 1963

OpenClaw安卓手机攻略

想在安卓手机上安装 OpenClaw,目前主要有两种主流方法:一种是使用专门的,操作简单直观;另一种是在命令行环境下进行,自由度更高。你可以根据自己的偏好和动手能力来选择。

suny8的专栏 2899

软件工程画图

1.工具介绍 visio以及starulm都是不错的画图工具,visio可以自定义模具,一些不规则的模具可以在里面自定义,staruml是是一款开放源码的UML开发工具,主要支持9种uml建模,支持语法检测以及正反向工程。 2.N/S图与PAD图 这两种图可以用visio软件画,选取矩形模具,必要的时候在开始-指针工具调整为直线,连接,很多不规则的模具直接用直线进行构建即可,PAD图的选择模具可以自己新建一个模具,然后保存,再使用 例: void root ( float root1, fl

qq_41845951的博客 9540

结构函数分析与 JESD51-14 标准详解

结构函数(Structure Function)是将器件瞬态热响应曲线(冷却曲线)通过数学变换,转换为热阻(Rth)与热容(Cth)沿热流路径一维分布的图形化分析方法。它能“看到”热量从结(Junction)到壳(Case)或环境的过程中,经过每一层结构时的热学特性。

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 57

12306列车时刻表查询api功能实现

最近乘坐火车,在车上像快要看看列车时刻表,大概知道什么时间到达什么车站,起初是每次都打开12306APP查询,然后感觉每次打开APP很麻烦,就去微信小程序里边搜索,果然有我们伟大的猿类同胞做了这件事。于是乎,我就想12306是不是有开放平台提供了接口供我们使用,查了查竟然没有,聚合数据有此类接口(https://www.juhe.cn/docs/api/id/22),还是收费的。身为一个勤劳好学的...

江南极客 2万+

QEMU源码全解析 —— virtio(3)

QEMU源码全解析 —— virtio(3)

phmatthaus的专栏 1847

MIKE水动力笔记1_岸线及水深数据之依靠全球数据库资源提取的方法

通过各种数据库资源来获取全球岸线及水深数据,这种方法获取的岸线及水深数据精度偏低,比较适合大尺度范围的水动力研究。

晏长街的博客 1万+

火车车次查询-余票查询--Api接口

1.来自12306的火车车次数据 使用12306网站的接口,查询余票。此接口采集自这里。全国火车站代号字典,下载 。如有转载,请标明来自此出处http://blog.youkuaiyun.com/qxs965266509,必须注意! 火车票余票查询 http://dynamic.12306.cn/otsquery/query/queryRemanentTicketAction.do?meth...

445822357 758

硬件测试有哪些?

硬件单元测试(UT)是验证电路功能与可靠性的关键环节,主要分为电源测试和信号测试两大模块。电源测试需验证输入电压范围、高低压极限、短路保护等功能,确保供电稳定性;信号测试则聚焦时钟、总线、存储等接口的时序与完整性。测试要求统一标准、可追溯数据、问题闭环处理,通过开发与测试协同确保质量。规范的单元测试能有效降低后期集成风险,提升产品可靠性,其核心始终是在最小单元上确保稳健性,为系统级可靠性奠定基础。

硬核科技 245

用例驱动需求落地:从12306ng实战看业务建模三阶分层

用例(Use Case)是将模糊用户意图转化为可验证业务契约的核心建模方法,其本质在于剥离技术实现、聚焦角色-动作-目标的业务闭环。它遵循‘概念定义→分层具象→异常校准’的演进逻辑,通过零级锚定系统边界、一级切分核心价值流、二级锁定业务意义,构建可追溯、可协作、可传承的需求基线。在高并发、强规则的典型场景如火车票订票系统中,用例不仅支撑验收标准与API设计,更成为影响分析与知识传承的关键载体。本文以12306ng开源项目为线索,深入解析用例分层实践与五大高频避坑要点。

baochuanying9531的博客 397

C#对接EtherNet/IP协议 完整版|罗克韦尔AB PLC通信+CIP核心概念全解析

你做罗克韦尔(AB) PLC工业上位机开发,是唯一的首选协议,没有之一!EtherNet/IP(Ethernet Industrial Protocol)是基于标准以太网的工业级通信协议,由罗克韦尔自动化主导开发,是ODVA(开放设备网络供应商协会)主推的工业以太网标准,也是目前全球应用最广泛的工业以太网协议之一。原生适配罗克韦尔AB PLC:Micro800、CompactLogix、ControlLogix、Micro850等全系AB PLC原生标配EtherNet/IP,无需额外配置,开箱即用;

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 890

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

时空票额矩阵:高并发票务系统的底层建模与一致性实践

在高并发资源争抢系统中,传统静态库存模型易导致物理资源抽象失真与超卖风险,其本质是数据结构与现实约束的错配。本文基于时空票额矩阵这一三维建模思想,解析如何将座位、时间、路径耦合为可计算的原子单元,实现毫秒级余票判定与强一致性保障。该模型突破关系型数据库瓶颈,支撑亿级QPS下的精准调度,已在12306新客票系统落地验证,并延伸至挂号、充电等城市公共资源场景。核心价值在于用数学化时空网格替代业务逻辑硬编码,使系统真正贴合物理世界的运行规律——这正是票额生成逻辑与库存分片策略演进的技术原点。

didi9310的博客 333

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Gemini 3.5如何重构人机交互:从提示词到自然对话

大语言模型正从‘需精心设计提示词’的工具阶段,迈入‘以自然语言完成复杂任务’的原生应用阶段。其核心原理在于长上下文理解、多模态意图对齐与推理链可信自检三大技术支点,显著降低用户认知负荷与工程适配成本。这一演进不仅提升了AI在文档生成、法律审查、医疗辅助等场景的落地精度,更推动产品交互向‘信息熵减’方向进化——用户无需理解技术逻辑,即可完成专业级操作。Gemini 3.5正是这一范式跃迁的关键代表,标志着AI从辅助工具升级为无感协同伙伴。

weixin_30485379的博客 464

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

火车发车时间api 火车相关内容查询

火车发车时间api,可根据列次号,查询列次类型、出发站、终点站、发车时间、到达时间、运行时间、里程、票价相关信息等相关内容。 接口名称:火车发车时间api 接口平台:开放api 接口地址:http://op.juhe.cn/onebox/train/query 支持格式:json 请求方式:http get 请求示例:http://op.juhe.cn/onebox/train/que

webserviceapi 2169

数据开放接口第一弹:12306官网中全国火车站数据

获取全国所有的火车站信息

klauszym的博客 1万+

火车正晚点查询

http://yupiao.info/wd/train

jiejiejieppp的专栏 1394

12306 列车时刻查询系统简单运行代码

#include&lt;bits/stdc++.h&gt; using namespace std; class Time { int hour,minute; public: Time(int h,int m) { hour=h;minute=m; } Time() { } int gethour() {r...

sdau_20171819的博客 2390

第8章 数据结构3

算法的设计依赖于数据的逻辑结构,算法的实现依赖于数据的存储结构,所以数据结构选择得好环,对程序的质量影响甚大。掌握基本的数据结构知识,是程序设计水平提高的必要条件。算法和数据结构也是面试中的必考题型。

chenyijun的专栏 1960

Java加载证书,访问12306的https链接

下载12306的证书,访问12306网站,下载12306的证书 导出证书 导出完成后,导入证书 查看是否导入 java中加载证书 public static void main( String[] args ){ PrintWriter out = null;    BufferedReader in = null;    String result = "";  ...

zhangzhong123456的博客 457
上一篇: AndroidStuidio签名过程中遇到的各种有毒的问题
下一篇: 安卓使用透明状态栏和fitsSystemWindows之后icon变形的问题
Java_noob1
博客等级 码龄11年 1粉丝 6原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值