Playwright基础到实战4(规避检测)

我们在调用浏览器去做自动化操作和我们手工打开的一个浏览器并不相同,就拿 window.navigator.webdriver来说,在手动打开的浏览器中返回我们的是 False 或 None,我们用Playwright去打开一个浏览器时则返回的一个 True,对方完全可以根据这个条件来判断我们是否是真人从而阻止我们进行操作,那么我们就可以用其他方法去规避他们的检测

方案一:

通过一个 js 文件去规避检测(这个方法也许在未来会失效)看代码:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False, slow_mo=1000)
    context = browser.new_context()
    context.add_init_script(path='stealth.min.js')
    page = context.new_page()
    page.goto('https://www.taobao.com/')
    ret = page.evaluate('window.navigator.webdriver')
    print(ret)

    page.wait_for_timeout(3000)
    page.close()
    context.close()
    browser.close()

可以在上下文管理器中添加 stealth.min.js文件,这个js文件主要是用来把我们的驱动给伪装成正常的浏览器,当然这个方法以后也许会失效,接下来我们来讲一个永久性方法,需要stealth.min.js文件的可以私信我

方案二:

我们可以亲自打开浏览器,然后让Playwright进行接管我们的浏览器去进行下一步操作,接下来的操作可能会有些不同,每个操作系统有每个操作系统不同的操作,在下面我们将以MAC系统来进行操作演示

首先找到谷歌可执行程序的完整路径,Mac本的Chrome在该目录下:

/Applications/Google Chrome.app/Contents/MacOS/

然后我们,打开终端,cd进入到该目录中,执行Google Chrome可执行程序,此时会打开一个Google浏览器,证明这一切正常,我们进入下一步
创建一个空白文件夹,用于保存浏览器数据
打开cmd输入命令启动chrome浏览器

./Google Chrome --remote-debugging-port=8899 --incognito --start-maximized --user-data-dir=“空白文件夹路径”

Playwright接管浏览器

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.connect_over_cdp('http://localhost:8899/')
    # 获取page对象
    page = browser.contexts[0].pages[0]
    #该操作会直接作用在接管的浏览器中
    page.locator('//*[@id="kw"]').fill('haha')
    res = page.evaluate('window.navigator.webdriver')
    print(res)
    print(page.url)
    print(page.title())

接管之后,我们可以继续做一些其他的操作,具体跟需求而定
好了,今天就先到这,我们明天继续讲解案例:爬某红书

乾坤未定,你我皆牛马

### Playwright 实战项目示例教程 #### 使用Playwright进行UI自动化测试实例 为了展示如何利用Playwright实现具体的UI自动化任务,这里提供了一个简单的例子——模拟用户登录过程。此过程中不仅涉及页面元素定位还包含了交互动作如点击按钮以及输入文本。 ```python from playwright.sync_api import sync_playwright with sync_playwright() as p: browser = p.chromium.launch(headless=False) # 启动浏览器, headless设为False以便观察操作流程 page = browser.new_page() try: page.goto('https://example.com/login') # 替换为目标网站的实际URL # 定位并填充用户名字段 username_input = 'input[name="username"]' page.fill(username_input, "your_username") # 定位并填充密码字段 password_input = 'input[type="password"]' page.fill(password_input, "your_password") # 找到登录按钮并点击它 login_button_selector = '.login-button' page.click(login_button_selector) # 等待一段时间让页面加载完成(可根据实际情况调整) page.wait_for_timeout(3000) print("Login successful!") finally: browser.close() ``` 上述脚本展示了基本的登录逻辑[^1]。通过这种方式可以很容易扩展至更复杂的场景比如处理验证码验证或是多因素认证等问题。 #### 数据抓取应用案例分析 另一个有趣的实践方向是从网页中提取有价值的信息。例如,在`MediaCrawler`项目里提到过的一个具体应用场景就是从Bilibili这样的社交平台上收集视频下方用户的评论内容[^2]。这类任务通常涉及到解析HTML结构找到目标节点,并将其内部的文字或者其他属性值抽取出来存储起来供进一步分析使用。 对于此类需求,Playwright提供了强大的API用于遍历DOM树、获取特定标签的内容甚至可以直接调用JavaScript函数来辅助完成某些特殊的数据采集工作。值得注意的是由于网络请求可能受到反爬机制的影响所以在编写相应代码之前应当充分了解目标站点的服务条款以免违反规定造成不必要的麻烦。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

北漂强

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

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

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

打赏作者

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

抵扣说明:

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

余额充值