首页 > 其他分享 >selenium爬虫被检测到如何破?

selenium爬虫被检测到如何破?

时间:2023-05-17 10:12:30浏览次数:28  
标签:检测 Selenium 爬虫 代理 IP driver options selenium

Selenium爬虫在爬取数据时可能会被网站检测到,这是因为Selenium模拟了浏览器行为,而相对于真实用户的浏览器,Selenium模拟无法识别JavaScript代码和CSS文件。此外,网站也可能通过检测请求头、IP地址、Cookie等信息来判断是否是爬虫。

以下是一些可能导致Selenium爬虫被检测到的原因:

1、请求头信息

默认情况下,Selenium提供的请求头信息与正常的浏览器请求头略有不同,需要自定义User-Agent字段让请求头更像正常的浏览器。

2、IP封禁或限制访问

如果频繁使用同一个IP地址进行数据爬取,服务器可能会将该IP地址视为恶意IP并加入黑名单。

3、Cookie验证

部分网站可能会在登录后,在后续的每个请求中都要求携带相关的Cookie信息。

4、页面加载速度

如果程序访问频率过高,页面加载时间却显示异常迅速,网站越是往后就越容易加强反爬虫措施了。

以下是一些减少Selenium爬虫检测的推荐步骤:

1、设置合理的间隔时间

通过设置适当间隔(如访问网站后1-5秒内不再访问),以模拟真实用户的行为,减少被检测到的概率。

2、更换User-Agent

可以在每个请求中使用不同的User-Agent字段,避免与其他请求相同IP和头部参数给网站接口留下“爬虫”的印象。

3、使用代理IP

使用代理服务器可以隐藏您的真实IP地址,并增加程序访问难度。需要注意如果时间较长或请求次数太频繁,机房IP等可能也会被风险防控系统禁用。

自动化操作方式的选择:尽量通过API而非Selenium进行爬取,例如爬取API接口,或使用第三方接口聚合数据等。

除此之外,还要遵守道德规范和法律法规,合法、合理地使用爬虫工具,以保护自己和其他网络用户安全。

以下是一个使用Selenium库的Python爬虫示例,可以爬取一个网站的数据:

from selenium import webdriver
import time

# 设置Chrome Driver(注意下载对应浏览器版本的Driver)
options = webdriver.ChromeOptions()
options.add_argument('--headless')   # 后台运行Chrome
options.add_argument('--disable-gpu') 
driver = webdriver.Chrome(executable_path=r'C:\chromedriver.exe', options=options)

# 定义要访问的网址和参数
url = 'https://www.example.com/search'
keywords = 'example'

# 访问网站
driver.get(url)

# 在搜索框内输入关键词
search_box = driver.find_element_by_name('q')
search_box.send_keys(keywords)
search_box.submit()

# 等待网页加载完成
time.sleep(5)

# 获取特定元素并打印内容
results = driver.find_elements_by_xpath("//div[@class='result']")
for result in results:
    title = result.find_element_by_xpath(".//h3/a").text
    summary = result.find_element_by_xpath(".//div[@class='description']").text
    print(title + '\n' + summary + '\n')

# 关闭浏览器
driver.quit()

上述示例使用Selenium模拟了一个用户在网站搜索框中输入关键字,并获取结果展示的过程。需要注意的是,有些网站可能会检测到程序自动化操作和代码爬取行为而阻断或限制访问,因此为了避免被服务器检测到恶意操作从而导致访问被拒绝等情况,可能需要通过更改请求头、设置间隔时间、使用代理IP等方法规避反爬虫措施。

selenium爬虫使用代理ip代码

以下是一段使用代理IP的Selenium爬虫示例代码,可以在每次请求时更换一个随机代理IP:

from selenium import webdriver
import random

# 定义代理IP列表
proxy_list = [
    'http://1.2.3.4:5678',
    'https://5.6.7.8:1234',
    # ...
]

# 随机选择一个代理IP
# 提取代理(http://jshk.com.cn/mb/reg.asp?kefu=xjy)
proxy = random.choice(proxy_list)

# 设置Chrome Driver
options = webdriver.ChromeOptions()
options.add_argument('--headless')   # 后台运行Chrome
options.add_argument('--disable-gpu')
options.add_argument('--proxy-server=' + proxy)   # 使用选中的代理IP
driver = webdriver.Chrome(executable_path=r'C:\chromedriver.exe', options=options)

# 访问网站
url = 'https://www.example.com'
driver.get(url)

# 等待网页加载完成
time.sleep(5)

# 关闭浏览器
driver.quit()

上述示例使用random.choice()函数从代理IP列表中随机选择一个代理IP,并将其添加到ChromeDriver的配置选项中,然后使用该对象进行请求,对于一些对IP有限制的网站(如百度反扒机制),使用IP池代替一个之前单一IP访问的极限,有助于更好地避免IP被服务器识别为爬虫和拒绝访问等风险。需要注意的是,要使用合法、高质量的代理IP服务提供商,尽量避免使用免费或低价代理IP服务,以避免安全和质量问题。

标签:检测,Selenium,爬虫,代理,IP,driver,options,selenium
From: https://www.cnblogs.com/q-q56731526/p/17407653.html

相关文章

  • 程序员怎么学爬虫JS逆向
    爬虫JS逆向(也称为前端逆向、JS破解等)是指通过分析JavaScript代码,破解前端加密算法或构造相应的模拟请求,从而有效地模拟人类用户完整的操作行为实现数据爬取。  以下是一些常见的爬虫JS逆向技术:1、自动识别Javascript解码器如果前端使用了Javascript编码来隐藏有价值的数据......
  • Android实现人脸识别检测(FaceDetector)
    前言目前网上常规解决这块问题的方案总结了一下有以下五种,当然有更多的暂时还未了解过~1、OpenCV(APIlevel8+)识别效果一般,侧脸无法识别.对识别的距离有限制(2~3米).如果需要做静态图片识别的话,需要对Javalibrary层进行修改.项目里有我编好的动态链接库,拿来就能用......
  • 爬虫爬取在线小说阅读网站详解
    前言环境:python安装、requests安装、BeautifulSoup安装爬取目标:笔趣看网站的《校花之贴身高手》,以下是第一章链接https://www.biqukan.com/11_11499/4260511.html开始爬取1.打开链接,打开检查窗口通过审查Elements,能定位到小说的文本内容在<divid="content"class="showtxt">......
  • 爬虫之IP代理
        在爬虫,爬数据的时候,很容易出现IP锁定,403,验证码等情况,一般出现此类情况的时候,就会用IP代理,来实现,大量的频繁更换IP来实现数据的频繁爬取和并发爬取。   现在的方式是增加一个这个的一个服务,一直跑几个免费的IP平台,大致也是这个流程以上图片来源于网络.其中代理的......
  • delphi Pascal yolov5 deepsort 目标检测 目标跟踪,支持onnxruntime、dnn、openvino和t
    delphiPascalyolov5deepsort目标检测目标跟踪,支持onnxruntime、dnn、openvino和tensorrt推理yolov5,使用c++封装成dll,delphi调用封装好的dll,实现目标检测和跟踪ID:212600676471966472......
  • opencv 表识别 工业表智能识别 数字式表盘识别,指针式表盘刻度识别,分为表检测,表盘纠正,
    opencv表识别工业表智能识别数字式表盘识别,指针式表盘刻度识别,分为表检测,表盘纠正,刻度分割,刻度拉直识别YYID:37400640060136589......
  • yolov5 yolov5_obb rotate 旋转目标检测 C/C++ 支持同时多相机和多模型
    yolov5yolov5_obbrotate旋转目标检测C/C++支持同时多相机和多模型windowsvs2019封装dll,一个dll,支持同模型多次加载和不同模型同时多次加载,支持mfc,和qt调用,支持批量图片识别,Demo支持图片、视频、文件夹和RTSP流识别。ID:143000668549326309......
  • 何为爬虫?
    爬虫指的是一种自动化程序,它可以模拟人类的行为,在万维网上抓取大量数据或者进行信息搜集。具体来说,爬虫通常借助网络协议和工具,例如HTTP或HTTPS协议、脚本语言(如Python、JavaScript)等,通过编写程序来访问特定网站或者页面,自动化地抓取、解析、存储和分析页面数据。爬虫可以用于多......
  • Python自动化测试篇:Selenium
    所谓自动糊测试就是用程序模拟用户在浏览器上的操作,可以通过程序实现在文本框中自动输入内容,点击按钮等操作。一:安装chromedriverhttps://chromedriver.storage.googleapis.com/index.html或者https://npm.taobao.org/mirrors/chromedriver/下载和自己的浏览器版本号一致的驱......
  • Android App中检测USB是否插入
    一、需求在Android开发过程中,在App中实现检测USB是否插入。二、实现过程1、使用UsbManager.ACTION_USB_DEVICE_DETACHED和UsbManager.ACTION_USB_DEVICE_ATTACHED检测USB的插拔无法实现。2、使用UsbManager.ACTION_USB_STATE和UsbManager.ACTION_USB_CONNECTED1privateb......