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

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

  •  
  •   garywill · 49 天前 · 3239 次点击
    这是一个创建于 49 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 条附言  ·  49 天前

    感谢开喷的诸位仁兄大佬,看来宣传语使用不周,有人看不懂第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  
       49 天前   ❤️ 10
    > jax-render 搜索不能通过仅是发送 HTTP 请求来完成

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

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

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

    感觉就是聚合搜索,但是这个聚合搜索不只是构造一个 get/post 请求,还可以模拟点击?
    eGlhb2Jhb2Jhbw
        9
    eGlhb2Jhb2Jhbw  
       49 天前
    @beordle #6 别啊,你咋能这么说人家呢,说不定人家是真的分不清楚呢 😆
    garywill
        10
    garywill  
    OP
       49 天前
    @beordle 不是的,是作为 extension 安装在你平时用的浏览器中。等下我给个例子,你们可能才明白
    est
        11
    est  
       49 天前
    宣传这么别扭,gay 里 gay 气的。
    garywill
        12
    garywill  
    OP
       49 天前
    @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  
       49 天前
    🙃 精神可嘉 都这么过来的
    PMR
        14
    PMR  
       49 天前
    看下演示图

    华而不实 没专用功能 最多算个导航页·
    feifeichen
        15
    feifeichen  
       49 天前
    ajax 为啥能和 http 协议相提并论
    xgfan
        16
    xgfan  
       49 天前
    点进来扫了一眼就准备开喷





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

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

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

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

    api/search?q=搜索词

    emmmmmmmm ,所以为什么要和 GET 、POST 并列来说?
    wdssmq
        32
    wdssmq  
       49 天前   ❤️ 1
    @wdssmq #31

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

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

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

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

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

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

    目前,已收录的有:

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

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