V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
misakawaque
V2EX  ›  JavaScript

完全没接触过 js 的人想要写一个实时监控当前浏览器在看的网页的 url 变动并记录在 xml 文件中的小程序来给 Java 做 api 需要学习那几方面的东西?

  •  
  •   misakawaque · 2021-02-25 13:24:45 +08:00 · 2956 次点击
    这是一个创建于 1365 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有 C/cpp,java 和 haskell 基础
    大佬和我讲这东西基本只能用 js 写
    33 条回复    2021-03-11 18:32:55 +08:00
    markgor
        1
    markgor  
       2021-02-25 13:35:46 +08:00   ❤️ 2
    你的需求写了很多个字,但却完美的避开了所有关键信息...

    1 、对方安装后 监控特定的浏览器还是?
    2 、针对你们自己网页进行监控,还是针对整个浏览器监控?
    misakawaque
        2
    misakawaque  
    OP
       2021-02-25 13:55:36 +08:00
    @markgor 监控特定的一整个浏览器啦
    就是想用一个程序,把电脑上 edge 所有访问动作都记录下来
    imgbed
        3
    imgbed  
       2021-02-25 13:57:52 +08:00   ❤️ 1
    @misakawaque 从逻辑开看,不管是 win10 还是 mac,应该不会让开发者这样监控,除非用户用的是你开发的浏览器。
    360 有没有监控就不知道了
    waiaan
        4
    waiaan  
       2021-02-25 13:58:30 +08:00
    这个是相当于开发浏览器的扩展了,监听所有 url 并发送到后台。
    zhyl
        5
    zhyl  
       2021-02-25 14:01:59 +08:00   ❤️ 1
    参考 QQ 读浏览器记录🐶
    markgor
        6
    markgor  
       2021-02-25 14:02:11 +08:00   ❤️ 1
    edge 不清楚,chrome 可以通过插件形式进行监控,但是上不了架。
    其实路由器监控不是更好吗...
    jones2000
        7
    jones2000  
       2021-02-25 14:02:23 +08:00
    网络抓包,
    ayase252
        8
    ayase252  
       2021-02-25 14:02:56 +08:00 via iPhone
    浏览器插件,而且那么侵犯隐私的功能不见得浏览器会提供接口,可以调研一下
    Ranying
        9
    Ranying  
       2021-02-25 14:03:44 +08:00   ❤️ 1
    油猴写个拓展,读 location.href,来个回调,然后 xmlhttprequest 发送到指定后端 api,然后后端 java 监听个端口,读到网址后记录到 xml 中。差不多就这些吧,这题目难以读明白
    jones2000
        10
    jones2000  
       2021-02-25 14:03:54 +08:00   ❤️ 1
    有可以偷偷给机器设置代理, 所有通讯都走你后台中转 要什么数据就都有了.
    lrabbit
        11
    lrabbit  
       2021-02-25 14:04:38 +08:00
    把所有网络包抓取下来,用 python 的 miltmproxy 框架写个脚本就行
    OHyn
        12
    OHyn  
       2021-02-25 14:10:34 +08:00
    写浏览器插件,可获取 URL,XML 要保存到本地?拼好字符串存,用 background script 存到 indexDB 里面吧。
    galikeoy
        13
    galikeoy  
       2021-02-25 14:29:05 +08:00   ❤️ 1
    看了一下你的发帖记录,你的真正需求是不是这样 "@zxCoder 是一个自动记录在浏览器阅读小说的阅读进度管理器"
    misakawaque
        14
    misakawaque  
    OP
       2021-02-25 14:44:41 +08:00
    @galikeoy 是的
    Kinnice
        15
    Kinnice  
       2021-02-25 14:52:10 +08:00
    @misakawaque 写个油猴脚本可
    zhuweiyou
        16
    zhuweiyou  
       2021-02-25 15:10:55 +08:00
    你这个需求有点奇怪, 还是说一下原始需求吧.
    misakawaque
        17
    misakawaque  
    OP
       2021-02-25 15:17:43 +08:00
    @zhuweiyou 简单来说,就是在看小说的时候,不同的小说经常会来回追更
    有时候会忘记加书签
    需要一个软件 自动记录我浏览器看到的每一本小说以及进度
    所以需要 url
    g00001
        18
    g00001  
       2021-02-25 15:19:13 +08:00
    写了几句 aardio 代码,可以监控到所有 Chromium 内核浏览器地址栏的变动( 包含 edge )

    import win.ui;
    /*DSG{{*/
    var winform = win.form(text="获取 Chrome,Edge 当前浏览的网址";right=759;bottom=469)
    winform.add(
    edit={cls="edit";left=20;top=19;right=735;bottom=437;edge=1;multiline=1;z=1}
    )
    /*}}*/

    import winex;
    import winex.accObject;

    var chromeWidget = {}
    var findChromeUrl = function(){
    for hwnd in winex.each( "Chrome_WidgetWin_1" ) {
    if(!chromeWidget[hwnd]){
    var accObject = winex.accObject.fromWindow(hwnd)
    if(accObject){
    chromeWidget[hwnd] = {
    accEdit = accObject.find(role="editable text";state="focusable");
    }
    }
    }

    var chrome = chromeWidget[hwnd];
    if(chrome){
    if(chrome.accEdit){
    var url = chrome.accEdit.value();
    if( url != chrome.lastUrl ){
    winform.edit.print(url);
    chrome.lastUrl = url;
    }
    }
    }
    }
    }

    winform.setInterval(2000,findChromeUrl);

    winform.show();
    win.loopMessage();
    zhuweiyou
        19
    zhuweiyou  
       2021-02-25 15:21:27 +08:00
    @misakawaque 写个浏览器插件 或者 油猴 可以做到.

    你后端写个接口, 接受一下脚本发过来的数据 就行了.
    xiaofenyi
        20
    xiaofenyi  
       2021-02-25 15:22:00 +08:00
    大家好!
    NCry
        21
    NCry  
       2021-02-25 15:26:12 +08:00   ❤️ 1
    真实需求和需求描述天差地别
    leoleoasd
        22
    leoleoasd  
       2021-02-25 15:26:37 +08:00   ❤️ 2
    推荐楼主阅读一下:避免 XY 问题 https://xyproblem.info/
    大意是:你要解决 X,你认为 Y 可以解决,于是问怎么解决 Y
    但是可能直接解决 X 是个更简单的需求

    这里的 X:记录小说 url
    这里的 Y:“实时监控当前浏览器 url 变动”
    g00001
        23
    g00001  
       2021-02-25 15:38:18 +08:00
    他是用浏览器看小说,浏览器 URL == 小说 URL
    misakawaque
        24
    misakawaque  
    OP
       2021-02-25 15:43:26 +08:00
    @leoleoasd 我看了一下那篇文章,我认为并不需要
    对于学习者而言,达成目标从来不是主要目的
    这种粗暴方法论甚至是有害的
    misakawaque
        25
    misakawaque  
    OP
       2021-02-25 16:00:36 +08:00
    @g00001 哦哦哦感谢大佬
    然而并不清楚怎么用 emmm
    也缺乏跨语言开发经验
    br_wang
        26
    br_wang  
       2021-02-25 16:03:39 +08:00
    @NCry 哈哈哈哈 XY 问题
    thefack
        27
    thefack  
       2021-02-25 16:28:11 +08:00
    我之前写过一个扩展,功能上符合楼主在 #17 楼的要求,不过网址是保存到书签栏,而不是本地,可以参考下: https://github.com/donething/auto_mark_chromium
    misakawaque
        28
    misakawaque  
    OP
       2021-02-25 16:45:17 +08:00
    @thefack 啊,对的,就是这样的
    zxCoder
        29
    zxCoder  
       2021-02-25 21:12:21 +08:00
    @zhyl 那稳了 v2 肯定有很多 qq 程序员
    forgottencoast
        30
    forgottencoast  
       2021-02-25 22:54:45 +08:00
    @galikeoy 只有老板才会把真实需求误差几千公里的描述出来给别人听。
    jmyz0455
        31
    jmyz0455  
       2021-02-26 10:12:35 +08:00
    我的天,实际需求和功能描述居然差那么远🤣
    ysc3839
        32
    ysc3839  
       2021-02-26 13:09:08 +08:00 via Android
    @imgbed 恰恰相反,Windows 和 macOS 这类传统桌面操作系统一般不会限制应用程序做一些自动化操作的。
    Windows 的话不需要任何授权就能实现,macOS 我没测试过,可能需要授权。
    iOS 和 Android 等移动操作系统才不会允许这类操作,不过 Android 使用无障碍功能应该也可以实现。
    zeni123
        33
    zeni123  
       2021-03-11 18:32:55 +08:00
    @misakawaque 你需要写一个插件,或者已经有了这么一个插件了,管理员可以推送插件到用户的 Edge 和 Chrome 上,而且可以强制运行. 估计是反摸鱼插件吧。用着公司电脑的我现在的 Chrome 上面就有一些不能删除的插件...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3012 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 14:18 · PVG 22:18 · LAX 06:18 · JFK 09:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.