playwright绕过浏览器检测,使用本地浏览器

本文介绍了如何利用Playwright库通过ws方式与本地浏览器进行通信,实现无须手动打开浏览器的自动化操作,特别提到了通过添加remote-debugging-port参数来绕过浏览器检测。两种使用方法包括在每次运行后手动开启调试模式,或在程序中直接启动带调试选项的浏览器实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此方法是playwright与本地浏览器以ws方式通信

可以绕过基本上大部分浏览器检测,因为这就是一个真正的浏览器

更多博客内容访问我的博客网站:回锅炒辣椒的博客

两种使用方式:

  1. 每次运行程序之后先打开浏览器
  1. 找到自己桌面chrome的快捷方式键
  2. 点击属性
  3. 在目标一栏的最后添加 --remote-debugging-port=9999 端口可自定义
  4. with sync_playwright() as p:
    # 创建一个连接
    browser = p.chromium.connect_over_cdp("http://localhost:9999")
    content = browser.contexts[0]
    page = content.new_page()
    
  5. 在上述page下进行浏览器操作即可
  1. 不打开浏览器,自行打开

在程序中添加下面的代码即可

import subprocess
# 这个路径可以是Google浏览器的exe路径,也可以是快捷方式的路径
chrome_path = r'"C:\Program Files\Google\Chrome\Application\chrome.exe"'
debugging_port = "--remote-debugging-port=9999"

command = f"{chrome_path} {debugging_port}"
subprocess.Popen(command, shell=True)

之后就是

   with sync_playwright() as p:
   # 创建一个连接
   browser = p.chromium.connect_over_cdp("http://localhost:9999")
   content = browser.contexts[0]
   page = content.new_page()

在上述page下进行浏览器操作即可

注意:
此方法不可以在打开了普通版(非第一种情况)的浏览器使用

更多爬虫与反爬虫可见GitHub仓库:
https://github.com/xishandong/crawlProject

基础篇
request篇
解析html以及正则篇
scrapy篇
高性能异步爬虫
自动化篇
selenium
playwright
进阶篇
综合案例
js逆向专题
请求头或响应数据加密
浏览器指纹检测
webPack篇
环境检测篇
wasm篇
验证码篇
滑块篇

在这里插入图片描述

### 使用 PythonPlaywright 绕过验证码的最佳实践 #### 1. 利用机器学习模型识别验证码图像 对于复杂的图形验证码,可以采用预训练的YOLOv5模型来检测和解析验证码中的特定元素。这种方法特别适用于滑动验证场景,在这些情况下,可以通过定位图片缺口的位置来进行自动填充[^2]。 ```python from pathlib import Path import torch def load_model(): model_path = "path/to/yolov5/model" device = 'cuda' if torch.cuda.is_available() else 'cpu' model = torch.hub.load('ultralytics/yolov5', 'custom', path=model_path, force_reload=True).to(device) return model model = load_model() results = model(image) # image 是待处理的验证码截图 ``` #### 2. 自动化交互流程模拟人类行为 为了提高成功率并减少被反作弊机制捕获的风险,应该模仿真实用户的鼠标移动轨迹以及点击间隔时间等细节特征。这通常涉及到生成随机但自然的动作序列,并将其应用于浏览器实例中执行相应的DOM操作[^3]。 ```javascript // JavaScript code snippet to simulate human-like mouse movements using PlayWright API. await page.mouse.move(x_start, y_start); const duration = Math.random() * (maxDuration - minDuration) + minDuration; await page.mouse.down(); for(let i=0;i<steps;i++){ let newX = x_start + ((i/steps)*(x_end-x_start)); await page.mouse.move(newX,y,{ steps: stepCount }); } await page.mouse.up(); ``` #### 3. 处理基于HTML5 canvas绘制的动态验证码 针对某些网站可能使用的canvas技术创建的动态变化型验证码(如拖拽拼图),则需先截取整个页面作为背景图层保存下来;接着利用OpenCV库计算两幅图像之间的差异区域从而找到目标对象的确切坐标位置[^4]。 ```python import cv2 import numpy as np def find_gap_position(bg_img, fg_img): bg_gray = cv2.cvtColor(np.array(bg_img), cv2.COLOR_BGR2GRAY) fg_gray = cv2.cvtColor(np.array(fg_img), cv2.COLOR_BGR2GRAY) diff = cv2.absdiff(bg_gray,fg_gray) _, thresh = cv2.threshold(diff, 50, 255, cv2.THRESH_BINARY) contours,_ = cv2.findContours(thresh.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)[-2:] contour = sorted(contours, key=cv2.contourArea, reverse=True)[0] rect = cv2.minAreaRect(contour) box = cv2.boxPoints(rect) gap_x = int((box[0][0]+box[2][0])/2) return gap_x ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dxxmsl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值