V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
garywill
V2EX  ›  分享创造

君可知?使用搜索引擎除了 GET 和 POST 之外,还有一种叫 Ajax-render 的“请求方式”

  •  
  •   garywill ·
    garywill · 2022-05-18 12:04:31 +08:00 · 4387 次点击
    这是一个创建于 915 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. 最一般的网页搜索用 HTTP GET 方法,会“产生不同的 URL”。
    2. 另一种常见的是 HTTP POST ,在 URL 上没有体现。POST 结果无法作书签。HTTP POST request 可以通过常用的浏览器或扩展工具发出。
    3. 除了以上两个大家都知道的外 ,还有一个搜索的“请求方法( request method )”: Ajax-render 。既不是 GET 也不是 POST 。 我们用户需要打开某网站的页面,然后手动输入,然后它们通过 Ajax 在页面中展现结果。Ajax-render 搜索不能通过仅是发送 HTTP 请求来完成。

    现在让我介绍一个相关的有用的工具(时隔良久我又来宣传了):

    • BigSearch 大术专搜 - 用于网络搜索的浏览器扩展,快速发送搜索请求。 BigSearch 支持 GET + POST + Ajax-render 3 种不同的方法 。 不仅如此。 许多其他功能,已可供日常和工作使用。
    第 1 条附言  ·  2022-05-18 16:09:44 +08:00

    感谢开喷的诸位仁兄大佬,看来宣传语使用不周,有人看不懂第3点

    “GET和POST理解,但第3点Ajax怎么能与它们并列呢?”

    解释:大家设置搜索引擎时,自然都要在GET还是POST两种方式中选择。有了这个工具,就好像有了第三种“方式”可选择。

    所以,这个Ajax-render特色是指:除了 一个 多搜索引擎工具 该有的 基本功能 外,它还有:

    • 甚至兼容那些不开放GET/POST接口(称为Ajax-render)的网站 的功能

    摘录README:

    搜索Ajax-render的网站

    有些网站无GET或POST,需要打开它们的页面后输入,它们然后通过Ajax展现结果。大术专搜支持收录和调用这类,且易配置

    例1:指定输入框的querySelector,并进行关键词输入,模拟回车动作

    "ajax": "#search-box-input"
    

    例2:先延时2s,输入,再延时1s,然后模拟点击按钮

    "ajax": [2000, "#search-box-input", 1000, "#submit-button"]
    
    41 条回复    2022-05-20 10:10:28 +08:00
    xiaopanzi
        1
    xiaopanzi  
       2022-05-18 12:10:42 +08:00   ❤️ 10
    > jax-render 搜索不能通过仅是发送 HTTP 请求来完成

    自己发明新词,然后搞伪科学是吧?
    Kinnice
        2
    Kinnice  
       2022-05-18 12:30:01 +08:00
    Ajax-rende ? 怎么感觉像是在程序员社区搞伪科学?
    selca
        3
    selca  
       2022-05-18 12:35:04 +08:00   ❤️ 1
    不就是 ajax 吗,无非就是这个搜索引擎爬了别人 ajax 的内容
    garywill
        4
    garywill  
    OP
       2022-05-18 12:51:38 +08:00
    @selca 这哪是搜索引擎。。也不是内容农场,何来爬什么内容。。-_-!

    这是个搜索请求专用发送器。另外,加入了其他所没有的,js 注入功能,以触发浏览器 ajax 。这样可以搞定那些不开放 GET/POST 的 web
    deplivesb
        5
    deplivesb  
       2022-05-18 12:56:57 +08:00
    来了来了,计算机的民科
    beordle
        6
    beordle  
       2022-05-18 13:51:46 +08:00 via iPhone   ❤️ 2
    給大家省流,就是一个 headless 浏览器抓 ajax 内容的爬虫。大家不要被误解 requestmethod 就是 http 协议规定的,ajax 属于 web 范畴都不是一个层次的概念…

    民科无疑…难以保持宽容…
    beordle
        7
    beordle  
       2022-05-18 13:54:30 +08:00 via iPhone
    不过,楼主历史帖子看起来具备计算机素养,项目本身也 ok…但为啥要这么宣传…
    marcong95
        8
    marcong95  
       2022-05-18 13:55:22 +08:00
    完全没看懂。。。。。。你这特色功能的「 Ajax-render 」也不给个例子。。。

    感觉就是聚合搜索,但是这个聚合搜索不只是构造一个 get/post 请求,还可以模拟点击?
    eGlhb2Jhb2Jhbw
        9
    eGlhb2Jhb2Jhbw  
       2022-05-18 13:55:35 +08:00
    @beordle #6 别啊,你咋能这么说人家呢,说不定人家是真的分不清楚呢 😆
    garywill
        10
    garywill  
    OP
       2022-05-18 14:07:18 +08:00
    @beordle 不是的,是作为 extension 安装在你平时用的浏览器中。等下我给个例子,你们可能才明白
    est
        11
    est  
       2022-05-18 14:08:19 +08:00
    宣传这么别扭,gay 里 gay 气的。
    garywill
        12
    garywill  
    OP
       2022-05-18 14:15:02 +08:00
    @beordle
    @marcong95 你说对了,可以模拟点击。

    搜索 Ajax-render 的网站:

    说明示例 1:指定输入框的 querySelector ,并进行关键词输入,模拟回车动作
    "ajax": "#search-box-input"

    说明示例 2:先延时 2s ,输入,再延时 1s ,然后点击按钮
    "ajax": [2000, "#search-box-input", 1000, "#submit-button"]

    具体实际应用示例:有道翻译就是个不开放 GET 或 POST 的例子
    "youdao": {
    "dname": "有道词典",
    "addr": "https://dict.youdao.com",
    "action": "https://dict.youdao.com/search",
    "kw_key": "q",
    "btns": {
    "lookup": {
    "label": "查询"
    },
    "trans": {
    label: "翻译",
    action: "https://fanyi.youdao.com/",
    ajax: "#inputOriginal"
    }
    }
    }
    https://github.com/garywill/BigSearch/blob/13df51d27c7bb07cac229872098f91b0b3f4d5c3/src/enginesdata.js#L665-L680
    doublleft
        13
    doublleft  
       2022-05-18 14:58:52 +08:00
    🙃 精神可嘉 都这么过来的
    PMR
        14
    PMR  
       2022-05-18 15:09:39 +08:00
    看下演示图

    华而不实 没专用功能 最多算个导航页·
    feifeichen
        15
    feifeichen  
       2022-05-18 16:51:09 +08:00
    ajax 为啥能和 http 协议相提并论
    6IbA2bj5ip3tK49j
        16
    6IbA2bj5ip3tK49j  
       2022-05-18 16:53:40 +08:00
    点进来扫了一眼就准备开喷





    可是可喷的点太多了,让我一下子不知道从哪儿开始喷了……
    wangx0102
        17
    wangx0102  
       2022-05-18 16:57:16 +08:00
    不知所云
    wangkun025
        18
    wangkun025  
       2022-05-18 17:05:05 +08:00
    不知
    Newb1e
        19
    Newb1e  
       2022-05-18 17:12:31 +08:00
    你代码应该就是个聚合吧?
    Newb1e
        20
    Newb1e  
       2022-05-18 17:14:12 +08:00
    php 里面好像有个 Ajax:render
    Newb1e
        21
    Newb1e  
       2022-05-18 17:15:23 +08:00
    @Newb1e #20
    看错了
    fuchish112
        22
    fuchish112  
       2022-05-18 17:19:30 +08:00
    虽然又解释了一遍,但是还是没搞懂
    eason1874
        23
    eason1874  
       2022-05-18 17:26:01 +08:00   ❤️ 6
    说得花里胡哨的,其实就是——模拟表单提交

    有的网站的关键词搜索结果页面不能通过 URL 直达,访问时必须先打开搜索页面,输入关键词点击提交,由网页 JS 构造请求去获取搜索结果。楼主的工具就是把这个操作自动化
    LeegoYih
        24
    LeegoYih  
       2022-05-18 17:28:11 +08:00
    ”有些网站无 GET 或 POST ,需要打开它们的页面后输入,它们然后通过 Ajax 展现结果。“
    是不是指服务端渲染的页面和数据?
    感觉就是个实时返回结果的爬虫。
    garywill
        25
    garywill  
    OP
       2022-05-18 17:31:38 +08:00
    @eason1874
    > 说得花里胡哨的,其实就是——模拟表单提交

    对!还是大佬你总结得精练准确!
    cweijan
        26
    cweijan  
       2022-05-18 19:15:30 +08:00
    对你这种标题党, 我只能说一句傻逼
    joesonw
        27
    joesonw  
       2022-05-18 20:19:49 +08:00 via iPhone
    就是把类似不支持 openSearch 等网站可以加到浏览器搜索栏里嘛。
    Xusually
        28
    Xusually  
       2022-05-18 20:29:00 +08:00
    ??????
    ck65
        29
    ck65  
       2022-05-18 20:46:54 +08:00
    Abbeyok
        30
    Abbeyok  
       2022-05-18 21:02:58 +08:00
    我觉得你很有做 ppt 项目的潜质
    wdssmq
        31
    wdssmq  
       2022-05-18 21:11:52 +08:00
    site/index.html?q=搜索词 ← 因为就是个静态页,所以不能这样实现搜索;

    上边页面中有一个搜索表单,提交后会向下边地址查询内容( Ajax )然后渲染( render )到页面;

    api/search?q=搜索词

    emmmmmmmm ,所以为什么要和 GET 、POST 并列来说?
    wdssmq
        32
    wdssmq  
       2022-05-18 21:58:38 +08:00   ❤️ 1
    @wdssmq #31

    Ajax 拿到的数据,绝大部分就是要直接或间接渲染回页面上的,所以使用习惯中就自带了渲染的部分;

    你这儿不嫌累非要多强调一个渲染「凯旋而归.jpg 」,还和 GET POST 并列,着实让一群人懵逼,包括我;

    如果你用「使用 Ajax 形式进行搜索」「 Ajax 返回搜索结果」或许懂的人会多一些;

    流行前后端分离的今天,一大堆网站是你说的这种 Ajax render 的形式,可从没人试图以这个角度「重新定义 http 请求」;
    molvqingtai
        33
    molvqingtai  
       2022-05-18 22:07:55 +08:00
    这标题描述得,让我以为发现了什么新协议
    marcojbk
        34
    marcojbk  
       2022-05-19 07:57:03 +08:00 via iPhone
    好家伙,搞计算机的还是不要像个卖安利的一样吧。。
    netnr
        35
    netnr  
       2022-05-19 09:02:51 +08:00 via Android
    服务端渲染 SSR 搜索引擎友好
    客户端渲染 CSR Google 支持,百度等大多搜索引擎不支持
    楼主说的 GET POST 就是服务端渲染,Ajax-render 就是客户端渲染,概念有点山寨
    garywill
        36
    garywill  
    OP
       2022-05-19 09:59:41 +08:00
    @wdssmq 这位大佬说得极是~
    原词"Ajax-get-search-result-and-show-on-page",结果被我无脑地简化成了"Ajax-render",造成在 client/server 上的混淆,是我的问题~
    garywill
        37
    garywill  
    OP
       2022-05-19 10:00:02 +08:00
    标题也是我,打了引号以为就 ok ,我山寨了~是我花里胡哨、华而不实、虚张声势~~..~
    原本是因为有一些小白的经历。设想:
    1. 小白想把很多网站添加到浏览器搜索栏,但浏览器只能添加 GET
    2. 小白安装了一些插件,这下也可以添加 POST 了,高兴。然而他又发现,有些既非 GET 也非 POST ,必须页内提交表单,页内 ajax 显示结果。小白无办法
    3. 终于小白遇到了在下。在下告诉他们,有一个新玩意,可以添加 GET/POST 之外的 ajax 什么什么那种~

    我的宣传失误~来程序员大佬圈里没有考虑专业性和严谨性~我成了 ppt 标题党~[啪脸][锤头]
    rioshikelong121
        38
    rioshikelong121  
       2022-05-19 11:39:45 +08:00
    标题看得我吓一跳,因为我找到了什么知识上的漏洞。。
    So ,就是说你这个搜索引擎对某些动态页面支持比较好而已对吧。。
    garywill
        39
    garywill  
    OP
       2022-05-19 12:09:45 +08:00
    @rioshikelong121 我这并非搜索引擎,是个浏览器插件,调用搜索引擎的。
    它「对某些动态页面支持比较好」这句话倒是没错,只不过,这里全是指用户浏览器端的——把提交表单的操作自动化——注入 js 到我们自己的浏览器——以实现把「无 GET 又无 POST 」的网站当作搜索引擎「添加到浏览器搜索栏」
    cszchen
        40
    cszchen  
       2022-05-20 00:02:57 +08:00 via iPhone
    有点可笑,被你给整不会了。
    你倒说说哪个网站既不支持 Get 也不支持 Post ?
    虽然看了楼上的评论,大概知道你这个扩展是干嘛的,但是你的描述真的很有问题
    garywill
        41
    garywill  
    OP
       2022-05-20 10:10:28 +08:00
    @cszchen 见笑了~以前的宣传都是面向普通用户的,没有来这种专业云集的场面宣传过

    > 你倒说说哪个网站既不支持 Get 也不支持 Post

    目前,已收录的有:

    有道翻译(不是有道查词,是有道文章翻译)、Chrome Extension API 查询、万词王( WantWords 反向词典)

    数量倒是不多
    其他偶尔见到一些做成类似 SPA 的就不留 GET/POST 接口(如一些金融走势信息如 CoinGecko 。他们就没打算让你添加进浏览器)
    或者有些网站会在 server 端检查 token (每次访问他们的主页随机给你生成一个)才给你结果
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5808 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 03:26 · PVG 11:26 · LAX 19:26 · JFK 22:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.