跳转到主要内容

未提供项目描述

项目描述

Groove

Python API用于Groove,这是一个为网络爬取和单元测试模拟而构建的代理服务器。其主要功能亮点:

  • 支持HTTP和HTTPs,通过HTTP/1和HTTP/2。
  • 在Mac和Linux上生成和安装本地CA证书,以支持系统curl和Chromium。
  • 支持不同级别的缓存 - 从完全禁用到积极维护所有正文归档。
  • 将同一URL的外出请求限制为1个并发请求,以节省带宽(如果请求已经进行中)。
  • 记录和重放发送到外部服务器的请求。在单元测试中重现测试流程,同时将其与爬取业务逻辑分离。
  • 支持第三方代理的商业代理。
  • 支持自定义TLS Hello客户端,以在拦截请求并重新转发数据包的同时维持类似Chromium的TLS握手。

更多信息请参阅Github项目。

用法

将groove添加到您的项目中,并安装允许生成https证书的本地证书

pip install groove
install-ca

使用默认参数实例化Groove通常适用于大多数部署。为了确保我们在完成代理后清理资源,请将您的代码包装在launch上下文中。

from groove.proxy import Groove
from requests import get
from pathlib import Path

proxy = Groove()
with proxy.launch():
    response = get(
        "https://www.example.com",
        proxies={
            "http": proxy.base_url_proxy,
            "https": proxy.base_url_proxy,
        },
        verify=str(Path("~/.grooveproxy/ca.crt").expanduser()),
    )
    assert response.status_code == 200

创建一个完全假的出站测试

from groove.proxy import Groove
from groove.tape import TapeRecord, TapeRequest, TapeResponse, TapeSession
from requests import get
from pathlib import Path

records = [
    TapeRecord(
        request=TapeRequest(
            url="https://example.com:443/",
            method="GET",
            headers={},
            body=b"",
        ),
        response=TapeResponse(
            status=200,
            headers={},
            body=b64encode("Test response".encode())
        ),
    )
]

proxy = Groove()
with proxy.launch():
    proxy.tape_load(
        TapeSession(
            records=records
        )
    )

    response = get(
        "https://www.example.com",
        proxies={
            "http": proxy.base_url_proxy,
            "https": proxy.base_url_proxy,
        },
        verify=str(Path("~/.grooveproxy/ca.crt").expanduser())
    )
    assert response.content == b"Test response"

项目详情


下载文件

下载适用于您平台的应用程序文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

groove-1.0.4.tar.gz (42.0 kB 查看哈希值)

上传时间 源码

构建的发行版

groove-1.0.4-cp310-cp310-manylinux_2_31_x86_64.whl (14.5 kB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.31+ x86-64

groove-1.0.4-cp310-cp310-macosx_11_0_x86_64.whl (14.5 kB 查看哈希值)

上传时间 CPython 3.10 macOS 11.0+ x86-64

由以下支持