Skip to main content

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

Project description

PyCDP - Chrome DevTools Protocol 客户端

Python License

CDP 客户端,自动配置 ChromiumOptions,可直接传给 DrissionPage 的 Chromium。

特性

  • 自动配置 --remote-allow-origins=* 参数
  • 支持绕过反爬的请求(在浏览器上下文中执行)
  • 完整的 IDE 类型提示支持

安装

pip install pycdp-client

快速开始

from pycdp import CDP
from DrissionPage import Chromium

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

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

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

API 文档

CDP 类

from pycdp import CDP

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

属性

属性 说明
options 返回 ChromiumOptions 实例,用于传给 Chromium
port 当前端口号

方法

方法 说明
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 import CDP
from DrissionPage import Chromium

# 创建 CDP
cdp = CDP(port=9222)

# 通过 cdp.options 传给 Chromium
page = Chromium(cdp.options).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 import CDP

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

注意事项

  1. 使用 cdp.options 传给 Chromium,自动配置端口和 --remote-allow-origins=*
  2. CDP 请求在浏览器上下文中执行,共享 cookies 和 localStorage
  3. 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.3.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.3-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pycdp_client-1.0.3.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.3.tar.gz
Algorithm Hash digest
SHA256 add0c7314e15ccab38d2fea543c3af67e2abfb9217f2e54aa60691fe1cf1e257
MD5 e74cc857b1f6b36e1151c1d3ad5a2f36
BLAKE2b-256 d59327ccdc0ad78a2c9282f59ea6d468cb4297bb63337b1be15a3ae6aa79ec3c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pycdp_client-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 7.1 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 b0b0e74d348ed19c5df58d8525de0896063dc68473689b00ff1ff37898ecf787
MD5 8b521ed2be5556839a1a02ecea13e291
BLAKE2b-256 f311e62b1e48370d7158bf531a2346b19119604d68a2344f395e09df04ef6594

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