首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

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

  •  
  •   pyse · 2018-04-04 16:47:27 +08:00 · 9541 次点击
    这是一个创建于 610 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    第 1 条附言  ·  2018-04-04 19:04:08 +08:00
    可能我不太懂前台跟后台的相互调用机制,我个人的理解就是说,前台去调用他 http 协议的后台接口时,为什么没有进行一些安全验证什么的?谁都可以调用这个 http 协议接口, 如此说来,就是不能区分出来,到底是手动在操作,还是脚本在循环运行
    61 回复  |  直到 2018-04-06 18:41:57 +08:00
        1
    maemual   2018-04-04 16:50:49 +08:00
    前端接口? js 写的东西怎么搞都会被人破解啊。
        2
    pyse   2018-04-04 16:53:19 +08:00
    @maemual 肯定后台接口啊,,登录,查询 ,提交订单,这不都是后台干的事儿?
        3
    Sharuru   2018-04-04 16:54:42 +08:00
    接口在哪? :doge:
        4
    maemual   2018-04-04 16:56:19 +08:00
    @pyse 你在说什么。。。这不都是给前端调用的么。
        5
    Muniesa   2018-04-04 16:56:30 +08:00   ♥ 1
    个人觉得这种东西真的想禁的话发个通知各个软件就得改
        6
    xycool   2018-04-04 16:57:24 +08:00
    @pyse 难道不是抓包来的吗。。。
        7
    1195726908   2018-04-04 16:57:26 +08:00 via iPhone   ♥ 1
    谁告诉你 12306 开放接口了?都是自己抓取 12306 的各种数据获取请求然后封装一遍,官方怎么可能提供接口了……
        8
    thedog   2018-04-04 16:58:24 +08:00 via Android
    我一直以为抢票软件和 12306 是有 py 交易的…
        9
    binjoo   2018-04-04 16:58:31 +08:00
    @pyse 你还是太年轻了,那些都是通过抓包,然后模拟请求的。
        10
    crab   2018-04-04 17:03:14 +08:00
    @Muniesa 这些天不是有个研究生秒车牌,直接被定性非法入侵互联网。12306 这个真要整,通知都不用了。
        11
    pyse   2018-04-04 17:06:18 +08:00
    @maemual 前端调用不是也可以鉴权吗?
        12
    jadec0der   2018-04-04 17:06:55 +08:00
    真没有后台接口,都是模拟浏览器,只不过大厂的技术比较好,插件的技术一般而已
        13
    SourceMan   2018-04-04 17:07:34 +08:00
    "爬虫"了解一下
        14
    SourceMan   2018-04-04 17:07:48 +08:00
    “模拟登录”了解下
        15
    pyse   2018-04-04 17:07:55 +08:00
    @1195726908 前端调的最终,还不是后台的接口?
        16
    pyse   2018-04-04 17:08:17 +08:00
    @Sharuru 一个 url 请求过去的,那个不是后台的协议接口吗?
        17
    pyse   2018-04-04 17:09:55 +08:00
    @jadec0der 我一直觉得前端请求的 http 协议,不就请求到后台去了吗,这本质不就还是调了后台接口?还是说我理解不对?
        18
    fe619742721   2018-04-04 17:11:06 +08:00
    @pyse 你后端不这么整,前端咋调用?这玩意不叫开放接口,
        19
    scarletmu   2018-04-04 17:11:31 +08:00
    @pyse 对啊 12306 的网站用的这些接口啊
        20
    pyse   2018-04-04 17:11:34 +08:00
    @fe619742721 那这应该叫啥,网站不都是种形式吗
        21
    b821025551b   2018-04-04 17:11:50 +08:00
    题主的知识是不是只停留在理论上,没做过项目。
        22
    fe619742721   2018-04-04 17:12:24 +08:00
    @pyse 这不叫啥,你说的那些软件叫爬虫和模拟登陆
        23
    pyse   2018-04-04 17:12:56 +08:00
    @b821025551b 哈哈,小白一枚啊,一个 http 请求到接口去,这种应该叫什么?跟真正调用后台接口有啥区别
        24
    shower   2018-04-04 17:15:05 +08:00
    你可以讲一下按照你的理解,12306 应该怎么做才算“不开放接口”呢?
        25
    wekw   2018-04-04 17:15:07 +08:00
    技术限制了你的想象力。


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

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

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

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

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

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

    见 @b821025551b #31

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

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

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

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

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

    人为增加脚本进行操作难度的方法即我在 #35 提出的 识别非人类使用者(全自动区分计算机和人类的公开图灵测试,CAPTCHA )
        39
    shower   2018-04-04 17:53:11 +08:00
    @pyse #30 什么算是“在官网”呢?
        40
    pyse   2018-04-04 18:29:46 +08:00
    @chinvo 哦哦,这样啊,学习了 /抱拳
    @janus77 形象生动,学习了
        41
    CloudnuY   2018-04-04 18:56:23 +08:00
    这些抢票软件就是在模拟人的操作
        42
    icy37785   2018-04-04 19:23:11 +08:00   ♥ 13
    楼主给我的感觉就是发现家里门被撬开了,然后很愤怒,防盗门厂为什么明明做了锁,却还是要跟小偷有 py 交易,让小偷可以打开我家的锁。
    底下的全部在回复,防盗门厂跟小偷没有 py 交易,是小偷自己撬开的。
    楼主很疑惑,防盗门明明应该只有主人可以打开,小偷打开了锁,肯定是 py 交易,没有 py 交易小偷怎么可以打开锁的。
    底下的都在解释原理,小偷是通过技术手段撬开了锁。
    楼主更疑惑了,为什么防盗门厂不把锁做得只有用这钥匙才能开,而要做得用别的东西也能撬开。
    前面的流程都走完了,我感觉下面的话题应该进展到,跟楼主说,防盗门厂家也希望只有钥匙可以打开锁,别的东西撬不开,但是做不到啊。除非不做钥匙孔,甚至不做钥匙孔都有可能用其他方式把门撬开,所以最安全的是焊死。
    12306 也想只有在官网可以登陆,别的地方访问不了接口呀,但是做不到啊,除非不让人访问。甚至不让人访问都有可能用其他的方式访问到接口,所以最保险的是服务器断网。
        43
    pyse   2018-04-04 20:04:27 +08:00
    @icy37785 哈哈,我好像钻了牛角了,被你这么一说,我懂了,感谢形象的例子
        44
    iyaozhen   2018-04-04 20:31:42 +08:00 via Android
    这叫接口,不叫开放接口
        45
    kookpua   2018-04-04 21:00:22 +08:00 via iPhone
    @icy37785 大神
        46
    sola97   2018-04-04 22:44:19 +08:00
    那得把网站停了,然后 App 加壳混淆协议加密,提高模拟难度
        47
    wxlpure   2018-04-04 23:00:04 +08:00
    前台调用后台的接口,当然有验证机制。最简单的例子,登陆后你会获取一个 token,之后你的请求头中就会带上 token,后台接收到请求时就会验证 token 是否是有效的。
        48
    cxbig   2018-04-04 23:01:24 +08:00
    不是听说黄牛都是直接包车厢再分销么。。。根本拦不住。
        49
    msg7086   2018-04-05 01:30:11 +08:00
    最差的,我开个脚本,让脚本在浏览器里填资料点按钮,你怎么防护?
        50
    zgx030030   2018-04-05 02:36:07 +08:00 via iPhone
    页面上 form 表单的 action 也叫做接口了吗。。。
        51
    xiqingongzi   2018-04-05 07:49:12 +08:00 via iPhone
    csrf 了解一下
        52
    karottc   2018-04-05 08:10:31 +08:00 via Android
    第一次不防,不就挂了嘛
        53
    xiaket   2018-04-05 09:05:43 +08:00   ♥ 3
    菜得让人心疼...
        54
    hlwjia   2018-04-05 09:43:39 +08:00 via iPhone
    我其实觉得楼主还是没懂
        55
    mazyi   2018-04-05 09:58:51 +08:00 via iPhone
    心疼楼主 5 秒,然后表示,多看书啊
        56
    CYKun   2018-04-05 10:41:34 +08:00 via Android
    菜的让人心疼。。
        57
    snw   2018-04-05 10:54:10 +08:00 via Android
    12306 不是有官方自带刷票、自动购票功能吗?我看到那些抢票网站也就官方那些功能而已,无非帮你挂机。
        58
    DeWhite   2018-04-05 20:58:20 +08:00 via Android
    黄牛都是直接卡票,一键推取。很恶心
        59
    reus   2018-04-05 23:11:21 +08:00 via Android
    懂的太少,想得太多
        60
    Cyron   2018-04-06 02:10:11 +08:00 via iPhone
    @icy37785 比喻恰当,防盗门厂商提供接口(锁眼)
        61
    Senorsen   2018-04-06 18:41:57 +08:00 via Android
    不好意思,不过我还是想说,楼主知识太少却想的太多,前后端 /HTTP API 还没搞明白就在想更复杂的问题了
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4069 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 34ms · UTC 07:34 · PVG 15:34 · LAX 23:34 · JFK 02:34
    ♥ Do have faith in what you're doing.