PHPackages                             hlw2326/think-plugin-collect - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. hlw2326/think-plugin-collect

ActiveThink-admin-plugin[Utility &amp; Helpers](/categories/utility)

hlw2326/think-plugin-collect
============================

HLW,Collect

v1.0.4(3mo ago)12↓91.7%MITPHPPHP &gt;8.2

Since Apr 3Pushed 2mo agoCompare

[ Source](https://github.com/hlw2326/think-plugin-collect)[ Packagist](https://packagist.org/packages/hlw2326/think-plugin-collect)[ Docs](https://www.hlw2326.com)[ RSS](/packages/hlw2326-think-plugin-collect/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (2)Versions (5)Used By (0)

Cookie 采集 API
=============

[](#cookie-采集-api)

多平台 Cookie 采集管理插件，支持抖音、快手、B站、小红书、TikTok、视频号六大平台，通过平台 + 渠道组合调用对应采集适配器完成数据采集。

> **作者微信**：hlw2326

---

用户解析器注册
-------

[](#用户解析器注册)

插件通过 `UserResolverService` 获取当前登录用户 ID，**具体实现由主应用注册**：

```
// 在主应用初始化时注册（参考 app/mini/service/ 或插件文档）
use hlw2326\mp\shared\service\UserResolverService;

UserResolverService::register(function (string $appid): ?string {
    return \app\mini\model\MiniUser::getCurrentUserId($appid);
});
```

---

API 接口
------

[](#api-接口)

ThinkAdmin 插件根据控制器命名空间自动发现路由。

路由映射规则：`plugin\{code}\controller\{module}\{controller}@{action}`

本插件 `{code}` 为 `collect`，控制器在 `controller/api/v1/` 下：

```
plugin\collect\controller\api\v1\Collect::platforms → /collect/api/v1/collect/platforms
plugin\collect\controller\api\v1\Collect::cookies    → /collect/api/v1/collect/cookies
plugin\collect\controller\api\v1\Collect::query      → /collect/api/v1/collect/query
plugin\collect\controller\api\v1\Collect::my          → /collect/api/v1/collect/my
plugin\collect\controller\api\v1\Collect::stats       → /collect/api/v1/collect/stats

```

### 接口认证

[](#接口认证)

参数位置说明`appid`Header / GET / POST小程序标识，用于解析用户身份### 接口列表

[](#接口列表)

接口方法登录说明`/collect/api/v1/collect/platforms`GET否获取支持的平台列表`/collect/api/v1/collect/cookies`GET否获取可用 Cookie 列表`/collect/api/v1/collect/query`POST是执行采集查询`/collect/api/v1/collect/my`GET是获取当前用户的查询记录`/collect/api/v1/collect/stats`GET是获取当前用户的查询统计### 采集查询接口

[](#采集查询接口)

```
POST /collect/api/v1/collect/query

```

**请求参数：**

参数类型必填说明`platform`string是平台标识（dy/ks/bili/xhs/sph/tk）`action`string是查询动作（verify/user\_info/feeds/content\_info）`cookie_id`int否Cookie 记录 ID（从 cookies 接口获取）`uid`string条���用户ID（action=user\_info 时必填）`content_id`string条件内容ID（action=content\_info 时必填）**返回示例：**

```
{
  "code": 1,
  "info": "查询成功",
  "data": {
    "data": {...},
    "exec_time": 123
  }
}
```

---

技术特性
----

[](#技术特性)

- **php-curl-class**：基于 `php-curl-class/php-curl-class ^9.8` 封装，所有 HTTP 请求统一经过 Curl 类
- **链式配置**：所有配置通过 `Config` 对象传递，支持 `withXxx()` 链式调用
- **不可变设计**：`Config` 和适配器实例通过 `withXxx()` 方法返回新实例，原始对象不变
- **零耦合**：采集方法与底层 HTTP 完全解耦，子类只需关注接口地址和响应解析

---

平台 × 渠道矩阵
---------

[](#平台--渠道矩阵)

平台标识WebH5App抖音`dy`✅✅-快手`ks`✅✅-B站`bili`✅✅✅小红书`xhs`✅✅-视频号`sph`✅✅-TikTok`tk`✅✅----

调用方式
----

[](#调用方式)

### 方式一：快捷调用（推荐）

[](#方式一快捷调用推荐)

```
use hlw2326\collect\adapter\dy\Dy;
use hlw2326\collect\adapter\ks\Ks;
use hlw2326\collect\adapter\bili\Bili;

// 直接传入 cookie 字符串
$api = Dy::web($cookie);

// 传入配置数组
$api = Dy::web(['cookie' => $cookie, 'timeout' => 20]);

// 传入 Config 对象
$api = Dy::web(\hlw2326\collect\Config::make()->withCookie($cookie));

// 调用采集方法
$res = $api->getUserInfo('sec_uid_xxx');
```

### 方式二：链式配置

[](#方式二链式配置)

```
$api = Dy::web($cookie)
    ->withHttpProxy('127.0.0.1', 7890)          // HTTP 代理
    ->withHeaders(['X-Custom-Header' => 'value']) // 追加请求头
    ->withTimeout(30);                            // 超时 30 秒

$res = $api->getUserInfo('sec_uid_xxx');
```

### 方式三：方法内临时配置

[](#方式三方法内临时配置)

```
$api = Dy::web($cookie); // 默认配置

// 这次请求临时换代理、超时
$res = $api->getUserInfo('sec_uid_xxx', [
    'proxy'   => ['type' => 'socks5', 'host' => '127.0.0.1', 'port' => 1080],
    'timeout' => 10,
]);

// 传入 Config 对象
$res = $api->getFeeds(\hlw2326\collect\Config::make()
    ->withHttpProxy('192.168.1.1', 8080)
    ->withHeaders(['Accept-Language' => 'en-US']));
```

### 方式四：通过 CollectService 主类

[](#方式四通过-collectservice-主类)

```
use hlw2326\collect\service\CollectService;

// 等同于 Dy::web($cookie)
$api = CollectService::make('dy', 'web', $cookie);
```

---

Config 配置项
----------

[](#config-配置项)

所有配置均可通过 `Config` 对象或数组传入，支持以下字段：

字段类型说明`cookie``string`Cookie 字符串`headers``array`自定义 HTTP 请求头（`['Key' => 'Value']`）`query``array`GET 请求 Query 参数`data``array`POST 请求 Body 参数`proxy``array`代理配置`timeout``int`请求超时秒数（默认 15）`followLocation``bool`是否跟随重定向（默认 true）`maxRedirects``int`最大重定向次数`returnHeaders``bool`是否返回响应头`sslCert``string`SSL 证书路径（空=不校验）`sslKey``string`SSL 证书 Key 路径### 代理配置格式

[](#代理配置格式)

```
// HTTP 代理
['type' => 'http', 'host' => '127.0.0.1', 'port' => 7890, 'user' => '', 'pwd' => '']

// SOCKS5 代理
['type' => 'socks5', 'host' => '127.0.0.1', 'port' => 1080, 'user' => '', 'pwd' => '']
```

### 快捷方法

[](#快捷方法)

```
Config::make()                                      // 创建空配置
Config::make()->withCookie('xxx')                  // 设置 Cookie
Config::make()->withHttpProxy('host', 7890)        // HTTP 代理
Config::make()->withSocks5Proxy('host', 1080)      // SOCKS5 代理
Config::make()->withHeaders([...])                  // 追加请求头
Config::make()->withQuery(['page' => 1])           // GET 参数
Config::make()->withData(['name' => 'value'])       // POST 参数
Config::make()->withTimeout(30)                     // 超时 30s
Config::make()->withFollowLocation(false)           // 关闭重定向
Config::make()->withSslVerify(false)                // 关闭 SSL 校验
Config::parse(['cookie' => '...', 'timeout' => 20]) // 从数组构建
```

---

Adapter 接口方法
------------

[](#adapter-接口方法)

所有渠道适配器统一实现以下接口：

方法说明参数`verify($config?)`验证 Cookie 是否有效`$config`: 临时配置`getUserInfo($uid, $config?)`获取用户信息`$uid`: 用户ID, `$config`: 临时配置`getFeeds($config?)`获取内容流/作品列表`$config`: 临时配置`getContentInfo($contentId, $config?)`获取内容详情`$contentId`: 内容ID, `$config`: 临时配置`get($url, $config?)`发送 GET 请求返回 `['success', 'data', 'message', 'httpCode']``post($url, $config?)`发送 POST 请求返回 `['success', 'data', 'message', 'httpCode']`---

目录结构
----

[](#目录结构)

```
think-collect/
├── composer.json
├── README.md
└── src/
    ├── Service.php                    # 插件服务注册
    ├── contract/
    │   ├── Adapter.php               # 采集适配器接口
    │   ├── BaseAdapter.php           # 抽象基类（Curl 封装）
    │   └── UserResolver.php           # 用户解析器接口
    ├── controller/
    │   └── api/v1/
    │       ├── Base.php              # API 基础控制器
    │       └── Collect.php           # 采集 API 控制器
    ├── service/
    │   ├── CollectService.php        # 主采集管理器
    │   ├── Config.php                # HTTP 请求配置对象
    │   └── UserResolverService.php   # 用户解析器服务
    └── adapter/
        ├── dy/    (Dy.php, DyWeb.php, DyH5.php)
        ├── ks/    (Ks.php, KsWeb.php, KsH5.php)
        ├── bili/  (Bili.php, BiliWeb.php, BiliH5.php, BiliApp.php)
        ├── xhs/   (Xhs.php, XhsWeb.php, XhsH5.php)
        ├── sph/   (Sph.php, SphWeb.php, SphH5.php)
        └── tk/    (Tk.php, TkWeb.php, TkH5.php)

```

---

安装说明
----

[](#安装说明)

```
composer install
composer dumpautoload
```

---

配置说明
----

[](#配置说明)

进入 **Cookie采集 → 采集配置**，可设置全局采集参数。

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance83

Actively maintained with recent releases

Popularity4

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 77.8% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~2 days

Total

4

Last Release

87d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/ee6da66b65746f35ea0bae8c4ed1625bd4e07d1eed206d19161ba4e22a412574?d=identicon)[hlw2326](/maintainers/hlw2326)

---

Top Contributors

[![hlw2326](https://avatars.githubusercontent.com/u/273061548?v=4)](https://github.com/hlw2326 "hlw2326 (7 commits)")[![a1608626143](https://avatars.githubusercontent.com/u/26795162?v=4)](https://github.com/a1608626143 "a1608626143 (2 commits)")

### Embed Badge

![Health badge](/badges/hlw2326-think-plugin-collect/health.svg)

```
[![Health](https://phpackages.com/badges/hlw2326-think-plugin-collect/health.svg)](https://phpackages.com/packages/hlw2326-think-plugin-collect)
```

###  Alternatives

[dueros/bot-sdk

度秘bot开发的PHP SDK

7414.8k1](/packages/dueros-bot-sdk)[zephir/kirby-contentsync

Kirby contentsync plugin

543.3k](/packages/zephir-kirby-contentsync)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
