为啥 12306 一个劲防黄牛,防抢票软件,但对外又是开放订票接口的?

2018-04-04 16:47:27 +08:00
 pyse

如题,始终不明白,12306 一个劲防黄牛,防抢票软件,但订票的接口为啥一直对外开放呢,这么多抢票软件,不都是直接封装官网的接口进行刷票吗? 12306 是是睁一只眼闭一只眼呢,还是说这玩意儿压根就防不了,高手在民间? 不是接口还是可以鉴权的吗?

12496 次点击
所在节点    程序员
61 条回复
b821025551b
2018-04-04 17:11:50 +08:00
题主的知识是不是只停留在理论上,没做过项目。
fe619742721
2018-04-04 17:12:24 +08:00
@pyse 这不叫啥,你说的那些软件叫爬虫和模拟登陆
pyse
2018-04-04 17:12:56 +08:00
@b821025551b 哈哈,小白一枚啊,一个 http 请求到接口去,这种应该叫什么?跟真正调用后台接口有啥区别
shower
2018-04-04 17:15:05 +08:00
你可以讲一下按照你的理解,12306 应该怎么做才算“不开放接口”呢?
wekw
2018-04-04 17:15:07 +08:00
技术限制了你的想象力。


大厂也是抓网页的。
scarletmu
2018-04-04 17:15:15 +08:00
@pyse 你正常使用肯定是你的客户端 /网页来请求这些接口啊,有自己的鉴权规则,你说的这种就是抓包分析这整个流程来实现模拟这样的请求过程,并不是 12306 主动开放的
chinvo
2018-04-04 17:17:52 +08:00
@pyse #23 楼主你魔障了

这些接口是暴漏给网站前端使用的,所以前面的各位称之为“前端接口”

与之相对的,“后台接口”指暴漏给 headless 的部分使用的接口,通过 apikey 和 IP 白名单之类的东西限制调用,也就是你想要怒喷的东西

但是 12306 只是被抓包解析出了“后台接口”,然后抢票软件假装自己是个浏览器去调用的
Delete
2018-04-04 17:18:01 +08:00
开放接口和爬虫不一样的
开放接口,是给第三方应用调用接口的权限。
而爬虫,是模拟真实用户操作的。

就像一个正常用户与网站交互,不通过 HTTP 你以为通过什么??
你要防爬虫?那真实用户也可能无法正常使用了。
xiaole
2018-04-04 17:19:16 +08:00
打掉大老虎,下面一群小苍蝇。还不如和大厂搞好关系~
pyse
2018-04-04 17:23:30 +08:00
@shower 按照我的理解就是,只有在 12306 官网上才能正常登录,查询 ,订票,其他地方一率不行,哈哈
b821025551b
2018-04-04 17:28:49 +08:00
这种东西,你可以理解为那些抢票软件把自己伪装成一个浏览器,把用户所有的操作模拟再自动化一下,每次刷票和用户手动刷票基本没区别。鉴权?不存在的。只要能给用户使用,就能被模拟,只是模拟的难度不同罢了。
ypw
2018-04-04 17:31:13 +08:00
浏览器能做的事,程序都能做,没有模拟不了的接口。

你能在浏览器里面登录,查询,买票,那如果浏览器是我写的呢?我难道不能控制你的行为,让你以每秒 100 次的速度买票吗? 12306 怎么防?
chinvo
2018-04-04 17:32:30 +08:00
@pyse #30 不可能的

见 @b821025551b #31

除非 12306 完全终止对外服务
pyse
2018-04-04 17:33:07 +08:00
@b821025551b 为什么不能搞成只有在官网才能调用他的协议接口?其他地方调就提示 401 之类的?哈哈,我也不懂,小白
chinvo
2018-04-04 17:35:12 +08:00
识别非人类使用者(爬虫 /机器人)是一门很深的学问

全球这么多专门研究这个的公司,也没有一家能 100% 屏蔽非人类使用者的

你十分反感的那个 12306 登陆界面和购票界面的九宫格图片就是做这个的,但是如你所见,效果十分不理想

而且抢票软件还可以通过直接展示这个东西给真人用户的方式来让用户去完成验证
HsingChih
2018-04-04 17:35:27 +08:00
12306 的反爬措施一直在更新的
janus77
2018-04-04 17:36:27 +08:00
菜农把菜批发给小贩 小贩再卖给消费者。
有一天菜农们统一口径,只准批发给 A 农贸市场的,其他人不卖。
然而有人不是 A 市场的,为了搞到菜,假装 A 市场的人去进货。
典型区别就是:
1. 菜农本身是不希望开放给 A 市场之外的
2. 菜农没法鉴别小贩是不是 A 市场的
3. 只要某个人设法让菜农相信他是 A 市场的,那他就可以拿到菜。
chinvo
2018-04-04 17:37:30 +08:00
@pyse #34 我认为你没有认真阅读 @b821025551b #31 的解答

你可以用浏览器访问,脚本就同样可以通过浏览器访问

人为增加脚本进行操作难度的方法即我在 #35 提出的 识别非人类使用者(全自动区分计算机和人类的公开图灵测试,CAPTCHA )
shower
2018-04-04 17:53:11 +08:00
@pyse #30 什么算是“在官网”呢?
pyse
2018-04-04 18:29:46 +08:00
@chinvo 哦哦,这样啊,学习了 /抱拳
@janus77 形象生动,学习了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/444336

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX