使用Selenium/Python+Chrome访问Crunchbase遭拦截,求解决方案
解决Crunchbase自动化检测的可行方案
1. 隐藏Selenium核心特征
Crunchbase会通过navigator.webdriver等属性识别自动化工具,需禁用这些暴露项:
from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager chrome_options = webdriver.ChromeOptions() # 保留原有配置 prefs = {"profile.default_content_setting_values.notifications": 2} chrome_options.add_experimental_option("prefs", prefs) chrome_options.add_argument("--enable-javascript") chrome_options.add_argument("--start-maximized") # 添加反检测参数 chrome_options.add_argument("--disable-blink-features=AutomationControlled") chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"]) chrome_options.add_experimental_option('useAutomationExtension', False) driver = webdriver.Chrome(ChromeDriverManager().install(), options=chrome_options) # 覆盖webdriver属性 driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})") driver.get(url)
2. 配置真实用户代理
使用和普通Chrome一致的User-Agent,避免被识别为自动化工具:
在ChromeOptions中添加:
# 替换为你当前Chrome的User-Agent(浏览器输入navigator.userAgent查看) chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36")
3. 模拟真实用户行为
添加随机延迟、滚动等操作,避免行为模式过于机械:
import time import random driver.get(url) # 随机等待2-5秒,模拟用户加载页面后的停留 time.sleep(random.uniform(2, 5)) # 模拟滚动页面 driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") time.sleep(random.uniform(1, 3)) # 可根据需要添加点击、移动鼠标等操作
4. 使用用户数据目录加载真实浏览器配置
直接复用你日常使用的Chrome用户数据,包含Cookie、浏览历史等真实信息,大幅降低被检测概率:
# Windows路径示例,替换为你的实际路径 chrome_options.add_argument(r"--user-data-dir=C:\Users\YourUsername\AppData\Local\Google\Chrome\User Data") chrome_options.add_argument("--profile-directory=Default")
注意:启动脚本前必须关闭本地运行的Chrome,否则会出现配置冲突。
5. 更换代理IP(可选)
如果你的IP因频繁访问被拉黑,可使用代理IP:
# 替换为有效代理地址 chrome_options.add_argument('--proxy-server=http://your-proxy-ip:port')
建议使用高质量的动态住宅代理,避免使用公开代理(这类代理大多已被标记)。
内容的提问来源于stack exchange,提问作者jpy
相关产品推荐
相关产品推荐

