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.4.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.4-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pycdp_client-1.0.4.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.4.tar.gz
Algorithm Hash digest
SHA256 80b66cba8bd56c79461bd6fc6e1f4bc194f1cb7e056afcf7575f587b74d46561
MD5 7e994a0e19f1d283b7f0c39a24ea7fff
BLAKE2b-256 cf9f4be6fe30dbfb2a8f925ccf081120e5a77124707bfd2474ec0929ec3642a0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pycdp_client-1.0.4-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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 5e29cf281df38ee70a56c56eef238cdbce9ab3321b9ff5bafeca07851877d557
MD5 ea1cf2e3e537d5496cd2b54070644eb1
BLAKE2b-256 68d56336bb09e72fb933c32ad83968149c491f24202b282a829dfe03e1e5d631

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