Winform实现12306登录购票(一)

你。 提交于 2020-04-04 18:09:11

验证码:

(1)发现12306的验证下载链接有两个,还会换,分别是:

        1. https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew?module=login&rand=sjrand&0.478012180178432

        2. https://kyfw.12306.cn/passport/captcha/captcha-image?login_site=E&module=login&rand=sjrand&0.8662127058743592

        我最开始写的时候用的是1,后来发现1下载失败变成2了,现在又变成1了,但2还能用;先按1写吧。

(2)流程:

第一步(GET): https://kyfw.12306.cn/otn/login/init 此处开始设置Cookie,以下所以Cookie保持一致

第二步(GET):https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew?module=login&rand=sjrand&0.478012180178432 最后为随机数可不传,要传也就两行代码如下:

 Random random = new Random();
 double randomValue = random.NextDouble();                 

第三步(POST):https://kyfw.12306.cn/otn/passcodeNew/checkRandCodeAnsyn 参数为:"randCode=33,37&rand=sjrand",randCode为验证码中正确图片坐标,rand为固定值;第一行字的高度为30px,每格小图片大概是70*70,返回结果为json,格式为:{"validateMessagesShowId":"_validatorMessage","status":true,"httpstatus":200,"data":{"result":"0","msg":"FALSE"},"messages":[],"validateMessages":{}}

"data":{"result":"1","msg":"TRUE"}时为成功。

第四步(POST):https://kyfw.12306.cn/otn/login/loginAysnSuggest 参数为:loginUserDTO.user_name={0}&userDTO.password={1}&randCode={2},其中randCode和上一步一样;返回的也是json,格式为:

{"validateMessagesShowId":"_validatorMessage","status":true,"httpstatus":200,"data":{"otherMsg":"","loginCheck":"Y"},"messages":[],"validateMessages":{}}

以上就是验证码及登录的整个流程。

效果如下:

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!