V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
shanghai1943
V2EX  ›  问与答

感觉现在很多网站都不用 json 传输数据了,是为了反爬么

  •  1
     
  •   shanghai1943 · 2021-03-24 17:00:06 +08:00 · 3392 次点击
    这是一个创建于 1341 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我们自己开发的应用还走的是 json 传输数据,但是我看有些网站查看 network 的时候没看到有请求,感觉像是通过页面来传输数据了,或者是 js 加密传输之类的。这么做的目的是为了安全反爬之类的么。

    25 条回复    2021-03-25 11:13:06 +08:00
    pekki
        1
    pekki  
       2021-03-24 17:01:51 +08:00
    现在不是用 google protobuf 了嘛
    locoz
        2
    locoz  
       2021-03-24 17:04:10 +08:00 via Android
    你搞清楚 JSON 是啥了吗…
    sadfQED2
        3
    sadfQED2  
       2021-03-24 17:25:41 +08:00 via Android
    你搞清楚 JSON 是啥了吗…
    shanghai1943
        4
    shanghai1943  
    OP
       2021-03-24 17:48:47 +08:00
    可能没表述清楚让各位大哥见笑了。我指的是目前我们这边应用的前后端交互走的是 ajax 异步请求,服务端接口数据返回格式是 json 类型,通过一些抓包工具可以查看网站的数据传输。但是目前有些网站似乎不用类似的 ajax 请求方式,至少从 Chrome 的 network 里看不到一些接口返回或者很直观的数据传输,所以猜想他们这么做是出于安全考虑的么。
    blackshow
        5
    blackshow  
       2021-03-24 18:28:29 +08:00
    还是没看懂
    dzdh
        6
    dzdh  
       2021-03-24 18:32:26 +08:00
    比如?哪个网站?给个出来。

    确定不是直播类型的网站走的 ws 么
    IGJacklove
        7
    IGJacklove  
       2021-03-24 18:42:33 +08:00 via Android
    @dzdh 他说的应该是后端生成好页面再返回给浏览器,我记得 react 有个框架就是这样的。
    cherryas
        8
    cherryas  
       2021-03-24 18:50:35 +08:00   ❤️ 2
    为啥我觉得楼主说的很容易懂,其他人为啥看不懂呢
    GPLer
        9
    GPLer  
       2021-03-24 18:51:32 +08:00 via Android
    楼上正解,因为服务端渲染(SSR)流行。
    isbase
        10
    isbase  
       2021-03-24 18:52:59 +08:00 via iPhone
    服务端渲染的应用。请求是在服务端发的。前端自然看不到
    a62527776a
        11
    a62527776a  
       2021-03-24 18:54:55 +08:00
    服务端渲染展示出完整页面的速度比下载页面后再通过 ajax 交互渲染要快
    blessyou
        12
    blessyou  
       2021-03-24 18:56:57 +08:00
    有时候恰恰是为了爬虫,后端给了完整的 HTML 给到浏览器,后续的页面请求还是走 ajax json 的,你可以看看后续的 network 。
    touchwithe
        13
    touchwithe  
       2021-03-24 19:01:02 +08:00 via iPhone
    不是前后端分离吗?又开始流行服务端渲染了?复古?
    also24
        14
    also24  
       2021-03-24 19:01:19 +08:00
    建议直接贴网址
    66beta
        15
    66beta  
       2021-03-24 19:01:51 +08:00
    @touchwithe 哈哈哈,你晚了半个世纪了,马上又要流行分离了
    CEBBCAT
        16
    CEBBCAT  
       2021-03-24 19:25:34 +08:00
    @cherryas #7 楼上那些网友的意思是,JSON 只是一种编码方式,不是一种传输方式。但楼主想说的其实是看不到 Ajax 通信了。比如说,后端用 XML 来返回数据
    shyangs
        17
    shyangs  
       2021-03-24 19:39:25 +08:00
    @CEBBCAT
    Ajax 的 x 就是指 XML
    CEBBCAT
        18
    CEBBCAT  
       2021-03-24 19:50:19 +08:00 via Android
    @shyangs 然后呢?
    66450146
        19
    66450146  
       2021-03-24 20:25:09 +08:00
    @touchwithe 现在流行的是前端服务器根据请求的 URL 先渲染一个足够展示的 html 页面,然后再把剩下的应用传下来。其实说白了就是在前后端分离的基础上增加了一个初始状态的优化,代价就是前端服务器需要承担一小部分的数据获取职责
    dzdh
        20
    dzdh  
       2021-03-24 20:51:41 +08:00
    马萨卡! 马萨卡一带一路 PJAX !
    zjsxwc
        21
    zjsxwc  
       2021-03-24 20:52:34 +08:00 via Android
    楼主,请给出一个网站的例子
    kerro1990
        22
    kerro1990  
       2021-03-24 21:21:26 +08:00 via iPhone
    知乎就是服务器渲染的 react
    my3157
        23
    my3157  
       2021-03-25 01:10:08 +08:00 via Android
    常用的一种反爬虫手段,请求的时候,服务端将数据一定程度的混淆,饭后将数据放入一个 js 脚本中返回,页面拿到数据后,通过页面上已经存在的某个变量(页面加载的时候已经有了)为参数,调用返回脚本中的某个方法,从而还原数据,渲染到页面上

    本质来说不难破解,就是费事,可以阻挡大部分 XX OO 爬虫教程了
    shanghai1943
        24
    shanghai1943  
    OP
       2021-03-25 09:56:03 +08:00
    @my3157 #23 涨姿势了。感谢指教。
    cherryas
        25
    cherryas  
       2021-03-25 11:13:06 +08:00
    反正我 selenium 一把梭了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5955 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 06:08 · PVG 14:08 · LAX 22:08 · JFK 01:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.