找回密码
 加入
搜索
楼主: 繁星

原生CDP操作浏览器

[复制链接]
 楼主| 发表于 2026-5-17 16:51:08 | 显示全部楼层
fyq 发表于 2026-5-17 02:52
运行If Not _AUCDP_Navigate("https://cn.bing.com") Then _Fail("启动浏览器并导航")成功。但有一个无用的 ...

disable-blink-features=AutomationControlled是为了反爬虫,我这边测试没有警告,edge://policy默认策略设置差异导致的,这个flag最新版我已经从默认参数中移除了,为了得到同样的效果可以在_AUCDP_Navigate启动之后加上_AUCDP_EnableStealth()等同于disable-blink-features=AutomationControlled的效果,不会再显示警告了,下载最新版
_AUCDP_Navigate("about:blank") 
_AUCDP_EnableStealth() ; ← 关键
_AUCDP_Goto("https://xxx.com")
发表于 2026-5-18 08:21:13 | 显示全部楼层
繁星 发表于 2026-5-15 16:22
跑下测试代码看看卡在哪里了

可以了,是这个dll文件,之前放在Myinclude里面没认到,必须放在脚本同一目录。

还一个问题就是论坛上直接点复制的代码,粘贴到SciTE里面,msgbox和exit前面都是空格,必须得换成tab,不然代码语法报错。
SciTE 版本:32-bit  版本 4.4.6      Mar 16 2021 13:51:55
发表于 2026-5-18 16:45:38 | 显示全部楼层
繁星 发表于 2026-5-17 16:51
disable-blink-features=AutomationControlled是为了反爬虫,我这边测试没有警告,edge://policy默认策略 ...

非常完美了,谢谢了。
发表于 2026-5-18 21:55:47 | 显示全部楼层
测试论坛的时候用的是你最新的代码.验证码老是错误的
 楼主| 发表于 2026-5-19 00:28:12 | 显示全部楼层
vspeitao@126.co 发表于 2026-5-18 08:21
可以了,是这个dll文件,之前放在Myinclude里面没认到,必须放在脚本同一目录。

还一个问题就是论坛上直 ...

这锅我不背,是论坛问题,不要点右上角复制按钮,手动用鼠标选择复制出来就没问题了
 楼主| 发表于 2026-5-19 00:54:35 | 显示全部楼层
xz00311 发表于 2026-5-18 21:55
测试论坛的时候用的是你最新的代码.验证码老是错误的

下载最新版本UDF库,配合登录脚本试试

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2026-6-24 21:46:17 | 显示全部楼层
这是个牛掰的大佬
发表于 7 天前 | 显示全部楼层
你好,请教下使用原生CDP怎么抓取网页中的表格呢。我的思路是使用_AUCDP_GetPageContent后正则匹配,是否有更便捷的方式呢,谢谢
 楼主| 发表于 7 天前 | 显示全部楼层
锋城未逾年 发表于 2026-7-6 14:39
你好,请教下使用原生CDP怎么抓取网页中的表格呢。我的思路是使用_AUCDP_GetPageContent后正则匹配,是否有 ...

使用最强大的功能JS
; #FUNCTION# ====================================================================
; Name ..........: _TableGetData
; Description ...: 提取页面中的表格数据,返回 JSON 格式字符串。
; Syntax ........: _TableGetData([$sSelector = "table"[, $iIndex = 0[, $bAll = False]]])
; Parameters ....: $sSelector - CSS 选择器,默认 "table"
;                  $iIndex    - 第几个匹配表格 (0 起算),仅当 $bAll=False 时有效
;                  $bAll      - True = 返回所有匹配表格的数据
; Return values .: 成功       - JSON 字符串。
;                               单表格: [["行1列1","行1列2"],["行2列1","行2列2"]]
;                               全部:   [[表格1],[表格2],...]
;                  失败       - 返回 0,并设置 @error = 1
; Remarks .......: 不包含 JSON 解析,返回的字符串请自行用 Json_Decode 等库处理。
; ====================================================================
Func _TableGetData($sSelector = "table", $iIndex = 0, $bAll = False)
    Local $sEscaped = StringReplace($sSelector, "", "\")
    $sEscaped = StringReplace($sEscaped, "'", "\'")

    Local $sJS
    If $bAll Then
        $sJS = _
            "(function(){" & _
            "    var tables = document.querySelectorAll('" & $sEscaped & "');" & _
            "    var result = [];" & _
            "    for (var t = 0; t < tables.length; t++) {" & _
            "        var table = tables[t];" & _
            "        var data = [];" & _
            "        for (var i = 0; i < table.rows.length; i++) {" & _
            "            var row = table.rows[i];" & _
            "            var rowData = [];" & _
            "            for (var j = 0; j < row.cells.length; j++) {" & _
            "                rowData.push(row.cells[j].innerText.trim());" & _
            "            }" & _
            "            data.push(rowData);" & _
            "        }" & _
            "        result.push(data);" & _
            "    }" & _
            "    return result;" & _
            "})()"
    Else
        $sJS = _
            "(function(){" & _
            "    var tables = document.querySelectorAll('" & $sEscaped & "');" & _
            "    if (tables.length <= " & $iIndex & ") return null;" & _
            "    var table = tables[" & $iIndex & "];" & _
            "    var data = [];" & _
            "    for (var i = 0; i < table.rows.length; i++) {" & _
            "        var row = table.rows[i];" & _
            "        var rowData = [];" & _
            "        for (var j = 0; j < row.cells.length; j++) {" & _
            "            rowData.push(row.cells[j].innerText.trim());" & _
            "        }" & _
            "        data.push(rowData);" & _
            "    }" & _
            "    return data;" & _
            "})()"
    EndIf

    Local $sJsonResult = _AUCDP_Evaluate($sJS)
    If @error Or $sJsonResult = "" Or $sJsonResult = "null" Then
        Return SetError(1, 0, 0)
    EndIf
    Return $sJsonResult
EndFunc
发表于 6 天前 | 显示全部楼层
繁星 发表于 2026-7-6 21:26
使用最强大的功能JS

感谢老师的回复,学习了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2026-7-13 02:53 , Processed in 0.069699 second(s), 15 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表