Selenium隐藏浏览器页面

Selenium隐藏浏览器页面

背景

在工作,学习中,我们常常会使用selenium来获取网页上的数据,编完完整程序之后,实现真正意义上的自动化获取,此时我们会发现在运行中往往会弹出浏览器页面,在调试过程中,这很方便,但是跑自动化时,我们就需要将浏览器隐藏在后台运行即可。这样就不会影响其他工作的进行。

方法

主要是通过修改浏览器启动选项进行设置,其实就是将driver=webdriver.Chrome()换成一下三行代码即可,涉及代码如下:

#浏览器启动选项
option=webdriver.ChromeOptions()
#指定为无界面模式
option.add_argument('--headless')
# option.headless=True  或者将上面的语句换成这条亦可
#创建Chrome驱动程序的实例
driver=webdriver.Chrome(options=option)

下面通过实例来展示,实现结果:

弹出浏览器页面

在这里我列出一个我认为不错的方法,分享给小伙伴们:
首先,是不隐藏浏览器的正常写法如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
url='https://www.baidu.com/'
#创建Chrome驱动程序的实例
driver=webdriver.Chrome()
#打开浏览器并获取此网址的信息
driver.get(url)
#根据定位条件定位内容,并输出
content=driver.find_element(By.XPATH,'//*[@id="s-top-left"]/a[1]')
print(content.text)
#关闭浏览器
driver.close()

运行结果如下:此时是有浏览器页面弹出的。

D:\workplace\venv\Scripts\python.exe D:\workplace\venv\111.py 
新闻

Process finished with exit code 0
在后台隐藏浏览器页面

通过修改浏览器启动选项,来设置浏览器的显隐:

from selenium import webdriver
from selenium.webdriver.common.by import By
url='https://www.baidu.com/'
#浏览器启动选项
option=webdriver.ChromeOptions()
#添加启动选项,指定为无界面模式
option.add_argument('--headless')
# option.headless=True  或者将上面的语句换成这条亦可
#创建Chrome驱动程序的实例
driver=webdriver.Chrome(options=option)
#,打开浏览器并获取此网址的信息
driver.get(url)
#根据定位条件定位内容,并输出
content=driver.find_element(By.XPATH,'//*[@id="s-top-left"]/a[1]')
print(content.text)
#关闭浏览器
driver.close()

运行结果如下,此时浏览器页面无弹出。

D:\workplace\venv\Scripts\python.exe D:\workplace\venv\111.py 
新闻

Process finished with exit code 0

总结

掌握一门技术的最佳途径就是实践,好记性不如烂笔头,让咱们一起去实践学习吧!

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: 可以通过在服务端实现以下几种防御措施来禁止使用Selenium模拟浏览器: 1. 检测浏览器的User-Agent字符串,如果发现是Selenium模拟的浏览器,就拒绝访问。 2. 在服务端设置验证码,并在客户端进行验证,如果验证码无法通过,就拒绝访问。 3. 在服务端设置限制访问频率,如果访问过于频繁就拒绝访问。 4. 在服务端设置限制访问次数,如果访问次数过多就拒绝访问。 请注意,这些方法并不能100%禁止使用Selenium模拟浏览器,但可以有效降低恶意使用的风险。 ### 回答2: 服务端怎么禁止别人用selenium模拟浏览器? 要禁止别人使用selenium模拟浏览器访问服务端,可以采取以下几种措施: 1. 检测用户请求的浏览器标识:服务端可以通过检查用户请求中的User-Agent字段,来判断请求是否来自真实的浏览器Selenium模拟的浏览器通常会有特定的User-Agent信息,可以通过识别这些信息来阻止对应的请求。 2. IP过滤和限流:对于经常发起模拟浏览器请求的IP地址,可以设置IP过滤规则或者限制请求频率,对其进行限制。这样可以有效防止恶意用户不断尝试使用selenium模拟浏览器。 3. JavaScript逆向难题:为了防止通过Selenium模拟浏览器绕过前述措施,服务端可以通过在网页中嵌入一些JavaScript代码,增加一些逆向工程的难度。这些代码可以使用各种技巧来识别是否有Selenium相关的脚本在执行,然后拒绝对应的请求。 4. 动态生成页面内容:通过在服务端动态生成页面内容,将一些敏感的信息、操作或者验证逻辑隐藏在动态生成的部分中,使得使用Selenium模拟浏览器的请求无法得到所需的关键信息或无法完成必要的操作。 5. 验证码:在服务端引入验证码机制,通过要求用户进行验证才能完成某些敏感操作,防止Selenium模拟浏览器自动化元素的提交动作。 需要注意的是,鉴于技术的不断发展和出现新的绕过手段,以上措施可能无法完全避免所有的Selenium模拟浏览器访问。因此,为了确保服务端的安全性,可能需要综合多种手段进行维护和防御。 ### 回答3: 服务端可以通过一些策略来禁止别人使用Selenium模拟浏览器。以下是一些可能的方法: 1. 检测Selenium自带的特定浏览器标识:Selenium在每个请求中都会带有自己的User-Agent字符串。服务端可以检测请求的User-Agent中是否包含Selenium特有的标识,如"webdriver"、"selenium"等关键字,如果检测到这些标识,服务端可以拒绝服务或采取其他防护措施。 2. 检测非人类浏览行为:Selenium模拟的浏览器行为通常是自动化、快速、连续的,与真实用户的浏览行为有所不同。服务端可以通过监测访问频率、点击模式、鼠标移动等行为特征,来判断是否是通过Selenium模拟的浏览器,若是则拒绝服务。 3. JavaScript行为检测:Selenium自带的浏览器在执行JavaScript时通常会有一些特定的行为表现。服务端可以通过监测浏览器的JavaScript执行行为,如是否能获取到特定的DOM元素、是否出现特定的JavaScript错误等,来判断是否是使用Selenium模拟的浏览器。 4. 验证机制:引入验证码等验证机制可以有效防止大规模使用Selenium的爬虫行为。通过在关键操作页面(如登录、注册等)中引入验证码,需要用户手动输入以通过验证,这样可以阻止自动化脚本的执行。 5. 不断升级的防护措施:由于Selenium等自动化工具的不断发展和演进,服务端需要定期更新防护策略以应对新的挑战。了解最新的Selenium使用技巧和防范措施,及时采取相应的应对措施。 综上所述,服务端可以通过多种手段来禁止别人使用Selenium模拟浏览器,但无法完全阻止所有的尝试。这需要不断改进和升级的防护机制,以平衡保护网站资源和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值