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

求助 V 友 , surge 重定向问题(正则表达式 替换)

  •  
  •   xingHI · 2022-03-19 18:47:30 +08:00 · 1512 次点击
    这是一个创建于 998 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这是北大法宝的界面,我搜索一项法律,比如说刑法,老是要携带不必要参数 示例链接:
    https://www.pkulaw.com/chl/937235cafaf2a66fbdfb.html?keyword=商标法 期望使用 surge 重定向后的效果:
    https://www.pkulaw.com/chl/937235cafaf2a66fbdfb.html?keyword=

    或者
    https://www.pkulaw.com/chl/937235cafaf2a66fbdfb.html

    注意:其 https://www.pkulaw.com/chl/ 这一段是不会会变的 只有 937235cafaf2a66fbdfb 会根据不同法律变化 .html 不变 。 所以关键就是不能重复匹配,可以通过 keywork 字段是否存在作为依据。

    测试:
    https://www.pkulaw.com/chl/4dce14765f4265f1bdfb.html?keyword=网络安全法 答案:
    https://www.pkulaw.com/chl/4dce14765f4265f1bdfb.html
    OR
    https://www.pkulaw.com/chl/4dce14765f4265f1bdfb.html?keyword=

    4 条回复    2022-03-21 00:20:36 +08:00
    ladit
        1
    ladit  
       2022-03-20 14:20:15 +08:00   ❤️ 1
    可以利用 Script 功能:

    ```
    [Script]
    pkulaw = type=http-request,pattern=https://www.pkulaw.com/chl.+ script-path=pkulaw.js
    ```

    ```javascript
    // pkulaw.js
    $request.url = $request.url.replace(/\?keyword=.+/, '')
    $done({$request})
    ```
    xingHI
        2
    xingHI  
    OP
       2022-03-20 19:18:37 +08:00
    @ladit 非常感谢您的答复,让我看到了解决这个问题的新思路
    我做测试一直没有成功,我刚刚把您的 js 文件上传到了 github 并且稍做修改,还是没有成功,已经对 https 进行解密
    [Script]
    pkulaw = type=http-request,pattern=^https?:\/\/www.pkulaw.com/chl/*,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/dmsusu/mytest/main/pkulaw.js

    github 上的 js 文件:
    $request.url = $request.url.replace(/\?keyword=*/, '');
    $done({$request});


    不知道是不是我设置的问题
    xingHI
        3
    xingHI  
    OP
       2022-03-20 19:21:37 +08:00
    @ladit 还未考虑到会重复匹配到问题,目前就是无效果
    ladit
        4
    ladit  
       2022-03-21 00:20:36 +08:00   ❤️ 1
    @xingHI 我重新看了一下,这样写,并打开 HTTPS 解密,可以实现你想要的效果。
    ```
    [Script]
    http-response ^https?:\/\/www\.pkulaw\.com\/chl\/.+ requires-body=true, script-path=pkulaw.js


    [MITM]
    hostname = www.pkulaw.com
    ```

    ```pkulaw.js
    if ($request.url.includes('keyword=')) {
    $done({
    status: 307,
    headers: {
    'Location': $request.url.replace(/\?keyword=.+/, '')
    }
    })
    }
    $done({})
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4409 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 03:57 · PVG 11:57 · LAX 19:57 · JFK 22:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.