当前位置:首页 > 日记本 > 正文内容

selenium 避免被识别

zhangchap2年前 (2022-07-21)日记本204
# @Author  : Jacob-ZHANG
import requests,base64
from PIL import Image
import csv,re
from selenium import webdriver
import time,random

#1启动浏览器。
#win
browser=webdriver.Chrome(executable_path='driver/chromedriver.exe')
#mac
#browser=webdriver.Chrome(executable_path='driver/chromedriver')

#2加入这个脚本可以避免被识别
browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """
     Object.defineProperty(navigator, 'webdriver', {
      get: () => undefined
    })
   """ })

#3延迟10s启动
browser.implicitly_wait(10)

#4利用谷歌浏览器打开目标网页
browser.get('https://pro.xxxxxx.com/searchx')

#5将窗口最大化
browser.maximize_window()

#6给网页一些时间加载
time.sleep(random.randint(1, 2))
...
...
...

需要说明的是:

  • 第一,selenium库距今已经有近20年的历史,各类网站、浏览器大多都能对它进行识别,因此为了避免被反爬,我可以通过加入上述脚本(#2)来防止网站的识别。
  • 第二,因为在完成#4的操作,也即利用浏览器打开网页后,显示的网页页面并非是最大化的窗口,这导致页面元素存在难以定位、从而报错的情况,因此我们在此处加上了窗口最大化的操作(#5)。
  • 第三,在以后的操作里,类似#6的代码会频频出现,这主要是因为受限于网速,不得不为网页加载提供更多时间。


分享给朋友:

相关文章

宝塔重启服务器后,Redis就启动不了解决方案

宝塔重启服务器后,Redis就启动不了解决方案

1.更改权限 chown -R redis.redis /www/server/redis/ 2.设置持久化...

python 随机生成时间戳写入txt文件/运行sql语句

import time from random import randint with open('time.txt', ...

python 发布文章 随机分类(choice)

from random import choice catid = choice([5,6]) #choice 函数从列表中随机提取...

python fake_useragent 模块用法

我们每次发送requests请求时通过random从中随机获取一个随机UserAgent,两行代码即可完成UserAgent的不停更换 from fake_useragent i...

减重五原则

1.主粮减半,少吃米面粥粉等;2.完全戒糖,包括可乐、奶茶等3.轻断食,每周一次,一日餐4.不限制任何动物脂肪和肉类,少吃植物油;5.保证随时喝到水,脂肪的消耗需要大量的水。...

python提高运行速度numba.jit

使用numba.jit。 numba可以将 Python 函数 JIT 编译为机器码执行,大大提高代码运行速度。import time def computeSum(size:&...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。