Skip to main content

Chrome DevTools Protocol 客户端,支持独立使用或与 DrissionPage 配合

Project description

PyCDP - Chrome DevTools Protocol 客户端

Python License

CDP 客户端,继承 ChromiumOptions,可直接传给 DrissionPage 的 Chromium。

特性

  • CDP 继承 ChromiumOptions,可直接传给 Chromium
  • 自动配置 --remote-allow-origins=* 参数
  • 支持绕过反爬的请求(在浏览器上下文中执行)
  • 完整的 IDE 类型提示支持

安装

pip install DrissionPage requests websocket-client

快速开始

from pycdp.client import CDP
from DrissionPage import Chromium

cdp = CDP(port=9222)
page = Chromium(cdp).latest_tab

page.get("https://example.com")

# CDP 请求(绕过反爬)
result = cdp.post('https://api.example.com/data', body={"key": "value"})
print(result)

API 文档

CDP 类

继承 ChromiumOptions 的 CDP 客户端,可直接传给 Chromium。

from pycdp.client import CDP

cdp = CDP(port=9222)  # 默认端口 9222

方法

方法 说明
get(url, headers=None, token_key=None, extra=None) GET 请求
post(url, body=None, headers=None, token_key=None, extra=None) POST 请求
put(url, body=None, headers=None, token_key=None, extra=None) PUT 请求
delete(url, headers=None, token_key=None, extra=None) DELETE 请求
request(url, method, body, headers, token_key, extra) 通用请求
run(js, wait=False) 执行 JavaScript
storage(key, value=None, storage='localStorage') 操作 Storage
cookies(name=None) 获取 Cookies
close() 关闭连接

请求示例

# GET 请求
result = cdp.get('https://api.example.com/data')

# POST 请求
result = cdp.post('https://api.example.com/data', body={"name": "test"})

# 带 token 的请求(自动从 localStorage 获取)
result = cdp.get('https://api.example.com/user', token_key='ACCESS_TOKEN')

# 带额外请求头
result = cdp.post('https://api.example.com/data', 
    body={"key": "value"},
    extra={"X-Custom-Header": "custom-value"}
)

执行 JavaScript

# 同步执行
title = cdp.run('document.title')

# 异步执行(等待 Promise)
result = cdp.run('fetch("/api/data").then(r=>r.json())', wait=True)

操作 Storage

# 获取 localStorage
token = cdp.storage('token')

# 设置 localStorage
cdp.storage('token', 'new_value')

# 操作 sessionStorage
cdp.storage('key', 'value', storage='sessionStorage')

获取 Cookies

# 获取所有 cookies
all_cookies = cdp.cookies()

# 获取指定 cookie
session = cdp.cookies('session_id')

完整示例

from pycdp.client import CDP
from DrissionPage import Chromium

# 创建 CDP(继承 ChromiumOptions)
cdp = CDP(port=9222)

# 直接传给 Chromium
page = Chromium(cdp).latest_tab

# 访问页面
page.get("https://example.com/login")

# DrissionPage 操作
page.ele('#username').input('user@example.com')
page.ele('#password').input('password123')
page.ele('#login-btn').click()

# CDP 请求获取数据
result = cdp.get('https://api.example.com/user/profile', token_key='ACCESS_TOKEN')
print(f"用户信息: {result['data']}")

# 获取 token
token = cdp.storage('ACCESS_TOKEN')
print(f"Token: {token}")

上下文管理器

from pycdp.client import CDP

with CDP(9222) as cdp:
    result = cdp.get('https://api.example.com/data')
    print(result)

注意事项

  1. CDP 继承 ChromiumOptions,自动配置端口和 --remote-allow-origins=*
  2. 直接 Chromium(cdp) 即可使用,无需额外配置
  3. CDP 请求在浏览器上下文中执行,共享 cookies 和 localStorage
  4. CDP 实例会在 __del__ 时自动关闭,也可手动调用 close()

License

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pycdp_client-1.0.2.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pycdp_client-1.0.2-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file pycdp_client-1.0.2.tar.gz.

File metadata

  • Download URL: pycdp_client-1.0.2.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for pycdp_client-1.0.2.tar.gz
Algorithm Hash digest
SHA256 0fdb4e7910aa0d2cf9485bcce0f25959232bbe3ff9acc90bb492533a6375e066
MD5 42198266aa01c4368fa642ad5699f93a
BLAKE2b-256 7f930b4df65fb66249ea1c95fc86234fc7899868bf700f4765694221b4e3341f

See more details on using hashes here.

File details

Details for the file pycdp_client-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: pycdp_client-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 7.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for pycdp_client-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0252c28c16367caded4bb8c0c4a411beac970c4404df95794c07ca8b5dd2b84d
MD5 a405ff5f8b077abce4426b9cf92e56cb
BLAKE2b-256 c0c8ade1142a853b4b3f65ce8518a425c3f3ac50d46c7ad932d007bdc4cbca9c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page