谷歌无头浏览器+规避检测

selenium 模块的基本使用
问题:selenium 模块和爬虫之间具有怎样的关联?
- 便捷的获取网站中动态加载的数据
- 便捷实现模拟登录

什么是selenium模块?
- 基于浏览器自动化的一个模块。

selenium模块的使用流程:
- 环境安装:pip install selenium
- 下载一个浏览器的驱动程序(谷歌,firefox等):
- chromedriver下载路径:http://chromedriver.storage.googleapis.com/index.html
- 根据对应的chrome版本下载对应的chromedriver版本
- 实例化一个浏览器对象
- bro = webdriver.Chrome(executable_path='./chromedriver.exe')
- 编写基于浏览器自动化的操作代码
- 发起请求:get(url)
- 标签定位:find系列的方法
- 标签交互:send_keys('xxxxxxxx')
- 执行js程序:execute_script('xxxxxxxxx')
- 前进、后退:back()、forward()
- 关闭浏览器:close()
- selenium 处理iframe:
- 如果定位的标签位于iframe标签之中,则必须使用switch_to.frame(iframe的id)
- 动作链(拖动):from selenium.webdriver import ActionChains
- 实例化一个动作链对象:action = ActionChains(bro)
- click_and_hold(div):长按点击操作
- move_by_offset(x,y)
- perform():让动作链立即执行
- action.release()释放动作链对象
谷歌无头浏览器+规避检测
例:
from selenium import webdriver
# 实现无可视化界面
from selenium.webdriver.chrome.options import Options
# 实现规避检测
from selenium.webdriver import ChromeOptions


def main():
    # 实现无可视化界面的操作
    chrome_options = Options()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gpu')

    # 实现规避检测
    option = ChromeOptions()
    option.add_experimental_option('excludeSwitches', ['enable-automation'])

    bro = webdriver.Chrome(executable_path='./chromedriver.exe', chrome_options=chrome_options, options=option)

    bro.get('https://www.baidu.com/')
    print(bro.page_source)


if __name__ == '__main__':
    main()

 options配置属性:

  1. options.add_argument(‘headless’) # 无头模式
  2. options.add_argument(‘window-size={}x{}’.format(width, height)) # 直接配置大小和set_window_size一样
  3. options.add_argument(‘disable-gpu’) # 禁用GPU加速
  4. options.add_argument(‘proxy-server={}’.format(self.proxy_server)) # 配置代理
  5. options.add_argument(’–no-sandbox’) # 沙盒模式运行
  6. options.add_argument(’–disable-setuid-sandbox’) # 禁用沙盒
  7. options.add_argument(’–disable-dev-shm-usage’) # 大量渲染时候写入/tmp而非/dev/shm
  8. options.add_argument(’–user-data-dir={profile_path}’.format(profile_path)) # 用户数据存入指定文件
  9. options.add_argument('no-default-browser-check) # 不做浏览器默认检查
  10. options.add_argument("–disable-popup-blocking") # 允许弹窗
  11. options.add_argument("–disable-extensions") # 禁用扩展
  12. options.add_argument("–ignore-certificate-errors") # 忽略不信任证书
  13. options.add_argument("–no-first-run") # 初始化时为空白页面
  14. options.add_argument(’–start-maximized’) # 最大化启动
  15. options.add_argument(’–disable-notifications’) # 禁用通知警告
  16. options.add_argument(’–enable-automation’) # 通知(通知用户其浏览器正由自动化测试控制)
  17. options.add_argument(’–disable-xss-auditor’) # 禁止xss防护
  18. options.add_argument(’–disable-web-security’) # 关闭安全策略
  19. options.add_argument(’–allow-running-insecure-content’) # 允许运行不安全的内容
  20. options.add_argument(’–disable-webgl’) # 禁用webgl
  21. options.add_argument(’–homedir={}’) # 指定主目录存放位置
  22. options.add_argument(’–disk-cache-dir={临时文件目录}’) # 指定临时文件目录
  23. options.add_argument(‘disable-cache’) # 禁用缓存
  24. options.add_argument(‘excludeSwitches’, [‘enable-automation’]) # 开发者模式
posted @ 2020-09-07 17:21  lurkerzhang  阅读(1022)  评论(0编辑  收藏  举报