在使用Selenium爬取网页资源时,为了防止被服务端识别,你可以采取以下措施:
设置User-Agent:更改默认的User-Agent,模拟真实用户的浏览器请求。
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3")
driver = webdriver.Chrome(options=options) 模拟浏览行为:模拟人类的浏览行为,例如随机暂停、滚动页面、点击链接等,以减少被识别为机器人行为的可能性。
import time
import random
driver.get('https://example.com')
# 随机等待时间
time.sleep(random.uniform(2, 5))
# 滚动页面
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# 随机点击链接
links = driver.find_elements_by_tag_name('a')
if links:
random.choice(links).click() 使用代理:使用代理IP来隐藏你的真实IP地址,从而减少被封禁的风险。
from selenium.webdriver.common.proxy import Proxy, ProxyType proxy = Proxy() proxy.proxy_type = ProxyType.MANUAL proxy.http_proxy = 'http://your_proxy:port' proxy.ssl_proxy = 'http://your_proxy:port' capabilities = webdriver.DesiredCapabilities.CHROME proxy.add_to_capabilities(capabilities) driver = webdriver.Chrome(desired_capabilities=capabilities)
控制请求频率:避免频繁的请求,适当控制爬取的速度和频率。
import time
import random
for url in urls:
driver.get(url)
time.sleep(random.uniform(3, 10)) # 随机等待3到10秒 处理Cookies和Session:保持Cookies和Session的一致性,以模拟正常用户的行为。
cookies = driver.get_cookies()
for cookie in cookies:
driver.add_cookie(cookie) 浏览器设置:尽量避免使用无头模式(headless mode),因为某些网站会检测无头浏览器。
options = webdriver.ChromeOptions()
# 不使用无头模式
# options.add_argument("--headless")
driver = webdriver.Chrome(options=options) 通过以上措施,可以有效减少被服务端识别为爬虫的风险,从而提高爬取的成功率和效率。
网友回复
有没有免费让ai自动帮你接管操作电脑的mcp服务?
mcp为啥用Streamable HTTP 替代 HTTP + SSE?
scratchjr有没有开源的前端html网页版本源代码?
多模态大模型能否根据ui交互视频来来模仿写出前端交互动画效果ui代码?
如何用阿里云oss+函数计算fc+事件总线EventBridge+消息队列+数据库+redis缓存打造一个高并发弹性系统?
阿里云函数计算 FC如何在海外节点搭建一个代理网络?
ai studio中gemini build的代码如何发布到github pages等免费网页托管上 ?
如何在cursor、qoder、trae中使用Claude Skills功能?
有没有不用u盘就能重装系统的开源工具?
python如何固定摄像头实时计算停车场停车位剩余数量?


