You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA网页抓取安全方法:如何净化响应数据防范恶意代码

VBA网页抓取的安全处理方案

一、先做响应合法性验证

在处理返回内容前,先确认请求本身是安全有效的:

  • 检查HTTP状态码,只处理200成功的响应
  • 验证返回内容类型,确保是预期的HTML格式
With http
    .Open "GET", url, False
    .send
    ' 验证请求状态
    If .Status <> 200 Then
        MsgBox "请求失败,状态码:" & .Status
        Exit Sub
    End If
    ' 验证内容类型
    Dim contentType As String
    contentType = .getResponseHeader("Content-Type")
    If InStr(1, contentType, "text/html", vbTextCompare) = 0 Then
        MsgBox "响应内容不是预期的HTML格式"
        Exit Sub
    End If
End With

二、净化HTML内容,移除恶意代码

直接把原始响应赋值给innerHTML可能触发恶意脚本,先通过正则移除危险标签,再转义特殊字符:

' 需先引用「Microsoft VBScript Regular Expressions 5.5」
Dim regEx As New RegExp
Dim cleanHtml As String
Dim rawResponse As String

rawResponse = http.responseText

' 移除<script>标签及内部所有内容
regEx.Global = True
regEx.IgnoreCase = True
regEx.Pattern = "<script[^>]*>[\s\S]*?</script>"
cleanHtml = regEx.Replace(rawResponse, "")

' 移除其他危险标签:iframe、embed、object
regEx.Pattern = "<(iframe|embed|object)[^>]*>[\s\S]*?</\1>"
cleanHtml = regEx.Replace(cleanHtml, "")

' 转义HTML特殊字符(避免后续解析时触发意外执行)
regEx.Pattern = "<"
cleanHtml = regEx.Replace(cleanHtml, "&lt;")
regEx.Pattern = ">"
cleanHtml = regEx.Replace(cleanHtml, "&gt;")

' 把净化后的内容赋值给HTML对象
html.body.innerHTML = cleanHtml

三、提取数据时的安全校验

提取href属性时,过滤掉非HTTP/HTTPS的恶意协议链接(比如javascript:、vbscript:):

Set topics = html.getElementsByClassName("sidebar-item-label")
Dim str As String
Dim isSafeLink As Boolean

For i = 1 To topics.Length - 1
    str = topics(i).href
    ' 只保留http/https开头的合法链接
    isSafeLink = (InStr(1, str, "http://", vbTextCompare) = 1 Or InStr(1, str, "https://", vbTextCompare) = 1)
    If Not isSafeLink Then
        str = "[无效/危险链接] " & str
    End If
    
    ' 字符串分割示例(假设按"/"分割)
    Dim splitParts() As String
    splitParts = Split(str, "/")
    
    ' 保存到Excel(示例:Sheet1第i行开始)
    Sheet1.Cells(i, 1).Value = str
    For j = 0 To UBound(splitParts)
        ' 给单元格内容加单引号,避免Excel解析为公式
        Sheet1.Cells(i, j + 2).Value = "'" & splitParts(j)
    Next j
Next i

额外安全建议

  • 限制抓取域名:提前校验目标URL的域名,只允许访问指定站点,防止被重定向到恶意网站
  • 启用Excel宏安全:只信任可靠的宏文件,避免恶意代码通过宏执行
  • 批量处理时加异常捕获:防止单个异常数据导致程序崩溃,同时记录错误信息

内容的提问来源于stack exchange,提问作者the_floor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 00:50:36