爬虫专栏:破解网站检测selenium反爬——“当前环境正在被调试“”
最近笔者在做一个开源项目分析的小工具,核心需求是通过Selenium自动化爬取Gitee平台上特定仓库的贡献者数据、提交记录等信息。这个爬虫脚本已经稳定运行了近一周,每天定时执行都能顺利获取数据。但就在前天,脚本突然彻底“罢工”——每次启动Selenium驱动Edge浏览器访问Gitee首页时,都会直接弹出“安全验证”提示框,无论等待多久都无法自动跳转,手动干预也无法正常进入网站,这让整个数据采集工作陷入停滞。当时弹出的验证界面有两个关键状态:第一个是初始的安全验证弹窗,提示“检测到您的访问可能存在安全风险,请完成验证”,界面中央只有一个“确认”按钮,点击后不会立即跳转,而是进入第二个提示界面,明确显示“当前环境正在被测试”,随后便陷入无限加载状态,无法进入Gitee的正常页面。
一、前言:爬虫突然“罢工”的突发状况
最近笔者在做一个开源项目分析的小工具,核心需求是通过Selenium自动化爬取Gitee平台上特定仓库的贡献者数据、提交记录等信息。这个爬虫脚本已经稳定运行了近一周,每天定时执行都能顺利获取数据。但就在前天,脚本突然彻底“罢工”——每次启动Selenium驱动Edge浏览器访问Gitee首页时,都会直接弹出“安全验证”提示框,无论等待多久都无法自动跳转,手动干预也无法正常进入网站,这让整个数据采集工作陷入停滞。
当时弹出的验证界面有两个关键状态:第一个是初始的安全验证弹窗,提示“检测到您的访问可能存在安全风险,请完成验证”,界面中央只有一个“确认”按钮,点击后不会立即跳转,而是进入第二个提示界面,明确显示“当前环境正在被测试”,随后便陷入无限加载状态,无法进入Gitee的正常页面。以下是当时截取的关键界面截图,完整记录了报错场景:


考虑到项目 deadlines临近,笔者立刻投入到问题排查中,前后尝试了多种主流的反反爬方案,过程颇为曲折,最终却被一个极其简单的方法意外解决,特此记录整个过程,希望能给遇到同类问题的开发者提供参考。
二、解决过程:那些“看似有效”的排查尝试
面对Gitee的反爬拦截,我的第一反应是Selenium的自动化特征被网站识别了。毕竟这类平台的反爬机制通常会针对自动化工具的独特标识进行检测,因此我优先从“隐藏Selenium特征”和“优化访问环境”两个方向展开尝试,每一步都做了详细的操作记录和结果验证。
1. 方向一:隐藏Selenium的自动化特征
查阅资料可知,Selenium驱动浏览器时会留下一些明显的“指纹”,比如Chrome/Edge浏览器的window.navigator.webdriver属性会被设置为true,这是很多反爬机制的核心检测点。为此我针对性地添加了一系列反检测参数,具体操作如下:
- 添加浏览器启动参数:在初始化EdgeDriver时,配置了–excludeSwitches=enable-automation(禁用自动化提示)、–disable-blink-features=AutomationControlled(禁用自动化控制特征)等参数,同时关闭了浏览器的扩展程序和预加载功能,代码片段如下:
from selenium import webdriver
from selenium.webdriver.edge.options import Options
edge_options = Options()
# 隐藏自动化提示
edge_options.add_experimental_option('excludeSwitches', ['enable-automation'])
# 禁用自动化控制特征
edge_options.add_argument('--disable-blink-features=AutomationControlled')
# 关闭扩展
edge_options.add_argument('--disable-extensions')
# 禁用预加载
edge_options.add_argument('--no-first-run')
driver = webdriver.Edge(options=edge_options)
- 修改webdriver属性:通过执行JavaScript代码,强制将window.navigator.webdriver设置为undefined,试图绕过前端检测:
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
"""
})
然而,即使完成了上述配置,重启爬虫后问题依然存在——安全验证弹窗还是会准时出现,webdriver属性的修改并未起到预期效果。我通过在浏览器控制台手动查看该属性,确认修改已生效,这说明Gitee的检测机制可能不止依赖前端的webdriver标识。
2. 方向二:优化网络环境与访问策略
排除了Selenium特征的问题后,我猜测可能是IP地址被Gitee标记为“风险IP”。毕竟爬虫脚本每天会发起上百次请求,虽然已经做了10秒以上的请求间隔,但仍有可能触发频率限制。为此我尝试了以下几种网络调整方案:
- 切换本地网络:将电脑网络从家庭WiFi切换到手机热点,使用移动数据网络访问Gitee。此时IP地址已完全更换,但启动爬虫后依然弹出安全验证,排除了单一IP被封禁的可能。
- 使用VPN切换地区:启用常用的VPN工具,将节点切换至北京、上海等不同城市的服务器,再次尝试爬虫访问。结果依旧不理想,安全验证弹窗没有任何变化,甚至出现了“地区访问限制”的附加提示。
- 降低请求频率与模拟人工操作:在脚本中添加了随机请求间隔(15-25秒),同时加入了模拟鼠标移动、随机点击页面空白处等操作,试图让访问行为更贴近人工。但这些优化措施同样未能突破拦截,点击安全验证的“确认”按钮后,还是会陷入“当前环境正在被测试”的无限加载。
连续尝试多种方案均告失败后,我开始怀疑问题是否出在浏览器本身或者系统环境上,甚至尝试更换了Chrome浏览器和对应的ChromeDriver,但最终的拦截结果完全一致,这让排查陷入了僵局。
三、最终解决方案、
在所有技术手段都尝试无果后,我抱着“死马当活马医”的心态,决定放弃Selenium,直接用手动方式访问Gitee网站,看看是否能发现一些线索。没想到这个看似“无用”的操作,却成了破解问题的关键。
具体操作过程非常简单:关闭了所有通过Selenium启动的浏览器窗口,直接双击桌面的Edge浏览器图标,在地址栏输入Gitee的官方网址(https://gitee.com/)。令人意外的是,手动访问时同样弹出了最初的安全验证弹窗——这说明问题可能不是Selenium专属的,而是当前设备或浏览器环境被Gitee标记了风险。
我点击了弹窗中的“确认”按钮,与Selenium自动化访问不同的是,这次页面仅加载了大约3-5秒,就顺利通过了验证,直接跳转到了Gitee的登录界面。登录后我测试了浏览仓库、查看提交记录等操作,所有功能都完全正常,没有再出现任何拦截提示。以下是手动访问成功进入网站的截图:

惊喜的是,在手动访问通过验证后,我重新启动了之前的Selenium爬虫脚本,发现安全验证弹窗竟然消失了,爬虫能够正常访问Gitee并获取数据,就像之前从未出现过问题一样。
四、原因分析与经验总结
结合整个排查过程和最终结果,我推测Gitee的反爬机制采用了“环境风险标记+人工验证解锁”的逻辑:
- 最初由于爬虫的高频访问,我的浏览器环境(可能关联了Cookie、浏览器指纹等信息)被Gitee标记为“高风险”,无论后续是通过Selenium还是自动化工具访问,都会触发强制安全验证。
- Gitee的安全验证机制能够区分“自动化操作”和“人工操作”,当我通过手动点击完成验证后,系统判定该环境为“合法人工使用”,从而解除了风险标记,后续即使使用Selenium访问,也不会再触发拦截。
核心经验总结:遇到自动化工具被网站拦截时,不要局限于技术层面的反检测优化,不妨先通过手动访问的方式完成网站的安全验证,很多时候网站的风险标记是针对“环境”而非“工具”,人工验证后即可解锁工具的正常使用,这比复杂的技术配置更高效。
爬蟲專欄:破解網站檢測selenium反爬——“當前環境正在被調試“”
最近筆者在做一個開源項目分析的小工具,核心需求是通過Selenium自動化爬取Gitee平臺上特定倉庫的貢獻者數據、提交記錄等信息。這個爬蟲腳本已經穩定運行了近一週,每天定時執行都能順利獲取數據。但就在前天,腳本突然徹底“罷工”——每次啟動Selenium驅動Edge瀏覽器訪問Gitee首頁時,都會直接彈出“安全驗證”提示框,無論等待多久都無法自動跳轉,手動干預也無法正常進入網站,這讓整個數據採集工作陷入停滯。當時彈出的驗證界面有兩個關鍵狀態:第一個是初始的安全驗證彈窗,提示“檢測到您的訪問可能存在安全風險,請完成驗證”,界面中央只有一個“確認”按鈕,點擊後不會立即跳轉,而是進入第二個提示界面,明確顯示“當前環境正在被測試”,隨後便陷入無限加載狀態,無法進入Gitee的正常頁面。
來源:https://blog.csdn.net/2403_87969572/article/details/155878638
抓取時間(ISO本地):2026-05-18 05:17:18
一、前言:爬蟲突然“罷工”的突發狀況
最近筆者在做一個開源項目分析的小工具,核心需求是通過Selenium自動化爬取Gitee平臺上特定倉庫的貢獻者數據、提交記錄等信息。這個爬蟲腳本已經穩定運行了近一週,每天定時執行都能順利獲取數據。但就在前天,腳本突然徹底“罷工”——每次啟動Selenium驅動Edge瀏覽器訪問Gitee首頁時,都會直接彈出“安全驗證”提示框,無論等待多久都無法自動跳轉,手動干預也無法正常進入網站,這讓整個數據採集工作陷入停滯。
當時彈出的驗證界面有兩個關鍵狀態:第一個是初始的安全驗證彈窗,提示“檢測到您的訪問可能存在安全風險,請完成驗證”,界面中央只有一個“確認”按鈕,點擊後不會立即跳轉,而是進入第二個提示界面,明確顯示“當前環境正在被測試”,隨後便陷入無限加載狀態,無法進入Gitee的正常頁面。以下是當時截取的關鍵界面截圖,完整記錄了報錯場景:


考慮到項目 deadlines臨近,筆者立刻投入到問題排查中,前後嘗試了多種主流的反反爬方案,過程頗為曲折,最終卻被一個極其簡單的方法意外解決,特此記錄整個過程,希望能給遇到同類問題的開發者提供參考。
二、解決過程:那些“看似有效”的排查嘗試
面對Gitee的反爬攔截,我的第一反應是Selenium的自動化特徵被網站識別了。畢竟這類平臺的反爬機制通常會針對自動化工具的獨特標識進行檢測,因此我優先從“隱藏Selenium特徵”和“優化訪問環境”兩個方向展開嘗試,每一步都做了詳細的操作記錄和結果驗證。
1. 方向一:隱藏Selenium的自動化特徵
查閱資料可知,Selenium驅動瀏覽器時會留下一些明顯的“指紋”,比如Chrome/Edge瀏覽器的window.navigator.webdriver屬性會被設置為true,這是很多反爬機制的核心檢測點。為此我針對性地添加了一系列反檢測參數,具體操作如下:
- 添加瀏覽器啟動參數:在初始化EdgeDriver時,配置了–excludeSwitches=enable-automation(禁用自動化提示)、–disable-blink-features=AutomationControlled(禁用自動化控制特徵)等參數,同時關閉了瀏覽器的擴展程序和預加載功能,代碼片段如下:
from selenium import webdriver
from selenium.webdriver.edge.options import Options
edge_options = Options()
# 隱藏自動化提示
edge_options.add_experimental_option('excludeSwitches', ['enable-automation'])
# 禁用自動化控制特徵
edge_options.add_argument('--disable-blink-features=AutomationControlled')
# 關閉擴展
edge_options.add_argument('--disable-extensions')
# 禁用預加載
edge_options.add_argument('--no-first-run')
driver = webdriver.Edge(options=edge_options)
- 修改webdriver屬性:通過執行JavaScript代碼,強制將window.navigator.webdriver設置為undefined,試圖繞過前端檢測:
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
"""
})
然而,即使完成了上述配置,重啟爬蟲後問題依然存在——安全驗證彈窗還是會準時出現,webdriver屬性的修改並未起到預期效果。我通過在瀏覽器控制檯手動查看該屬性,確認修改已生效,這說明Gitee的檢測機制可能不止依賴前端的webdriver標識。
2. 方向二:優化網絡環境與訪問策略
排除了Selenium特徵的問題後,我猜測可能是IP地址被Gitee標記為“風險IP”。畢竟爬蟲腳本每天會發起上百次請求,雖然已經做了10秒以上的請求間隔,但仍有可能觸發頻率限制。為此我嘗試了以下幾種網絡調整方案:
- 切換本地網絡:將電腦網絡從家庭WiFi切換到手機熱點,使用移動數據網絡訪問Gitee。此時IP地址已完全更換,但啟動爬蟲後依然彈出安全驗證,排除了單一IP被封禁的可能。
- 使用VPN切換地區:啟用常用的VPN工具,將節點切換至北京、上海等不同城市的服務器,再次嘗試爬蟲訪問。結果依舊不理想,安全驗證彈窗沒有任何變化,甚至出現了“地區訪問限制”的附加提示。
- 降低請求頻率與模擬人工操作:在腳本中添加了隨機請求間隔(15-25秒),同時加入了模擬鼠標移動、隨機點擊頁面空白處等操作,試圖讓訪問行為更貼近人工。但這些優化措施同樣未能突破攔截,點擊安全驗證的“確認”按鈕後,還是會陷入“當前環境正在被測試”的無限加載。
連續嘗試多種方案均告失敗後,我開始懷疑問題是否出在瀏覽器本身或者系統環境上,甚至嘗試更換了Chrome瀏覽器和對應的ChromeDriver,但最終的攔截結果完全一致,這讓排查陷入了僵局。
三、最終解決方案、
在所有技術手段都嘗試無果後,我抱著“死馬當活馬醫”的心態,決定放棄Selenium,直接用手動方式訪問Gitee網站,看看是否能發現一些線索。沒想到這個看似“無用”的操作,卻成了破解問題的關鍵。
具體操作過程非常簡單:關閉了所有通過Selenium啟動的瀏覽器窗口,直接雙擊桌面的Edge瀏覽器圖標,在地址欄輸入Gitee的官方網址(https://gitee.com/)。令人意外的是,手動訪問時同樣彈出了最初的安全驗證彈窗——這說明問題可能不是Selenium專屬的,而是當前設備或瀏覽器環境被Gitee標記了風險。
我點擊了彈窗中的“確認”按鈕,與Selenium自動化訪問不同的是,這次頁面僅加載了大約3-5秒,就順利通過了驗證,直接跳轉到了Gitee的登錄界面。登錄後我測試了瀏覽倉庫、查看提交記錄等操作,所有功能都完全正常,沒有再出現任何攔截提示。以下是手動訪問成功進入網站的截圖:

驚喜的是,在手動訪問通過驗證後,我重新啟動了之前的Selenium爬蟲腳本,發現安全驗證彈窗竟然消失了,爬蟲能夠正常訪問Gitee並獲取數據,就像之前從未出現過問題一樣。
四、原因分析與經驗總結
結合整個排查過程和最終結果,我推測Gitee的反爬機制採用了“環境風險標記+人工驗證解鎖”的邏輯:
- 最初由於爬蟲的高頻訪問,我的瀏覽器環境(可能關聯了Cookie、瀏覽器指紋等信息)被Gitee標記為“高風險”,無論後續是通過Selenium還是自動化工具訪問,都會觸發強制安全驗證。
- Gitee的安全驗證機制能夠區分“自動化操作”和“人工操作”,當我通過手動點擊完成驗證後,系統判定該環境為“合法人工使用”,從而解除了風險標記,後續即使使用Selenium訪問,也不會再觸發攔截。
核心經驗總結:遇到自動化工具被網站攔截時,不要侷限於技術層面的反檢測優化,不妨先通過手動訪問的方式完成網站的安全驗證,很多時候網站的風險標記是針對“環境”而非“工具”,人工驗證後即可解鎖工具的正常使用,這比複雜的技術配置更高效。
Crawler Column: Bypass Selenium Anti-Bot — “Environment Under Test”
I was building a Gitee analytics tool with Selenium (contributors, commits). It ran daily for a week, then failed: Edge opened Gitee and hit a security verification dialog—“possible risk, please verify.” Clicking Confirm led to “current environment is under test” and endless loading. Screenshots: Security verification dialog Environment under test warning I tried many anti-detection tricks; a manual browser visit unexpectedly fixed it. Full notes below.
Captured at (local ISO): 2026-05-18 05:17:18
I. Preface: When the Crawler Suddenly “Dies”
I was building a Gitee analytics tool with Selenium (contributors, commits). It ran daily for a week, then failed: Edge opened Gitee and hit a security verification dialog—“possible risk, please verify.” Clicking Confirm led to “current environment is under test” and endless loading. Screenshots:


I tried many anti-detection tricks; a manual browser visit unexpectedly fixed it. Full notes below.
II. Attempts That Looked Right but Failed
1. Hide Selenium fingerprints
Sites often check navigator.webdriver === true. I tried:
- Launch flags:
excludeSwitches=enable-automation,--disable-blink-features=AutomationControlled, disable extensions/first-run, etc.:
from selenium import webdriver
from selenium.webdriver.edge.options import Options
edge_options = Options()
edge_options.add_experimental_option('excludeSwitches', ['enable-automation'])
edge_options.add_argument('--disable-blink-features=AutomationControlled')
edge_options.add_argument('--disable-extensions')
edge_options.add_argument('--no-first-run')
driver = webdriver.Edge(options=edge_options)
- Override webdriver via CDP:
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
"""
})
Verification still appeared; console showed webdriver was undefined—Gitee likely uses more signals.
2. Network and behavior
- Switched WiFi → mobile hotspot: same dialog.
- VPN cities (Beijing, Shanghai, etc.): same, sometimes extra region warnings.
- Random 15–25s delays + fake mouse moves: still stuck on “under test.”
Chrome + ChromeDriver behaved identically.
III. What Actually Worked
I closed all Selenium windows and opened desktop Edge manually, navigated to https://gitee.com/. The same first dialog appeared—but after Confirm, it cleared in 3–5 seconds and reached login. Browsing repos worked normally:

Then I reran the Selenium script: no more verification; scraping resumed.
IV. Analysis and Takeaways
Likely environment risk flag + human unlock:
- High-frequency crawling marked this browser environment (cookies/fingerprint) as risky—Selenium or manual, verification triggers.
- The site distinguishes automation vs. human completion. Manual verification cleared the flag; Selenium was allowed afterward.
Lesson: don’t only tune stealth. Manually pass the site’s security check once—many platforms lock the environment, not the tool. Human unlock often beats elaborate configs.