【12306】登录流程及接口说明

重点:

以下所有涉及带参请求的,都要设置 Content-Type:application/x-www-form-urlencoded或是把参数扔进网址

 

一、获取验证码图片

url:https://kyfw.12306.cn/passport/captcha/captcha-image

type:post/get

param:

{
    "login_site" : "E",    //非必须(鬼知道这些参数是什么意思)
    "module" : "login",    //非必须
    "rand" : "sjrand",     //非必须
}

result:(类似如下图片)

 

二、校验验证码

url:https://kyfw.12306.cn/passport/captcha/captcha-check

type:post/get

param:

{
    "login_site" : "E",    //非必须(鬼知道这些参数是什么意思)
    "rand" : "sjrand",     //非必须
    "answer" : "180,110,250,110",    //点击图片的位置
}

result:

{
    "result_message": "验证码校验成功",
    "result_code": "4"
}

answer参数说明

以下图为例:

官方的做法是给图片添加点击监听事件

var code_arr = [];
$("#txx_img").on('click',function(event){
    var x = event.offsetX; //图片点击点x偏移量(从左到右)
    var y = event.offsetY - 30; //图象点击点y偏移量 (从上到下),减30是去掉验证码上提示信息的高度
    code_arr.push( x + ","+ y ); //arr是全局存储验证码点击数据的变量
})

//最后提交时,把数据拼装起来
var answer = code_arr.join(',');

自己测试接口时,可以用微信截图工具计算x,y再拼起来提交,(记住一定要从提示文字下面开始算!!!)

三、用户登录

url:http://kyfw.12306.cn/passport/web/login

type:post/get

param:

{
    "username" : "13622632263",    //必须 用户名
    "password" : "shuishishuishabi",     //必须 密码
    "appid" : "otn",    //必填(鬼知道是啥玩意) 
}

result:

{
    "result_message": "登录失败",
    "result_code": 1
}

下文?没有下文,暂时以失败告终,浏览器账号也登不进去了,不知道是不是被封号了

哪天成了再继续

### 关于12306 API接口的相关信息 目前,官方并未公开完整的12306 API接口文档供公众使用。然而,通过一些开源项目和社区的努力,可以找到部分非官方的实现方案以及相关的技术资料。 #### 非官方API解决方案 Go12306 提供了一种高效的方式来进行铁路票务查询[^1]。该工具专注于为开发者提供易用的API接口,能够轻松集成到其他应用程序中。尽管这不是官方渠道,但它已被证明是一种可靠的技术手段。 另一个值得注意的是 V-I-C-T-O-R 的 GitHub 开源项目[^2]。此项目不仅实现了简洁的API接口设计,还提供了详细的安装指导与运行环境需求说明。这使得开发者能够在本地环境中快速测试并验证其功能是否满足实际需求。 #### 用户友好性和安全性保障 为了保护用户的隐私及交易安全,在这些非官方实现中特别强调了不依赖任何第三方插件的特点。这意味着整个流程完全由用户自己掌控,不会因为外部因素而增加额外风险。 #### 技术细节补充 如果希望深入理解具体实现原理,则可以从研究现有代码入手[^3]。此外还有专门针对验证码处理的部分——比如 `12306_code_server` 这样的独立模块[^4],它可以作为单独的服务被调用来完成复杂的图形校验工作。 综上所述,虽然无法获取真正的官方版API文档,但从上述提到的各种资源里依然可以获得大量有价值的信息和技术支持来构建自己的定制化解决方案。 ```javascript // 示例:如何调用一个简单的非官方12306 API (假设存在这样的RESTful服务) fetch('https://example-api-for-12306.com/train/tickets', { method: 'GET', headers: { 'Content-Type': 'application/json' } }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error('Error:', error)); ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值