PHPackages                             zjmainstay/php-curl - 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. [HTTP &amp; Networking](/categories/http)
4. /
5. zjmainstay/php-curl

ActiveLibrary[HTTP &amp; Networking](/categories/http)

zjmainstay/php-curl
===================

PHP利用cURL实现模拟登录与采集

v1.0.9(1y ago)6624435Apache-2.0PHPPHP &gt;=5.4.0

Since Sep 22Pushed 3mo ago8 watchersCompare

[ Source](https://github.com/Zjmainstay/php-curl)[ Packagist](https://packagist.org/packages/zjmainstay/php-curl)[ Docs](http://www.zjmainstay.cn)[ RSS](/packages/zjmainstay-php-curl/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (9)DependenciesVersions (12)Used By (0)

php-curl
========

[](#php-curl)

PHP利用cURL实现模拟登录与采集，提供大量示例。（关键词：php curl login）

了解PHP cURL使用请参考：《[PHP cURL实现模拟登录与采集使用方法详解](http://www.zjmainstay.cn/php-curl)》

基于浏览器cURL命令快速生成PHP代码：[基于cURL命令解析获得PHP代码](http://demo.zjmainstay.cn/php/github/php-curl/demo/parseCurlGetPhpCode.php)

自动模拟登录+批量请求示例：[模拟登录后批量下载笔记](https://github.com/Zjmainstay/php-curl/blob/master/demo/62_curlmulti/62_wiz.cn.php)

项目分析报告与使用指南
-----------

[](#项目分析报告与使用指南)

点击按钮查看 [![zread](https://camo.githubusercontent.com/dbe8f5e3362d3184b37aab59634ca4d4b1fe396197913e176c81d9b4b2601c45/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f41736b5f5a726561642d5f2e7376673f7374796c653d666c617426636f6c6f723d303062306161266c6162656c436f6c6f723d303030303030266c6f676f3d64617461253341696d616765253246737667253242786d6c25334262617365363425324350484e325a79423361575230614430694d5459694947686c6157646f644430694d54596949485a705a58644362336739496a41674d4341784e6941784e6949675a6d6c7362443069626d39755a53496765473173626e4d39496d6830644841364c79393364336375647a4d7562334a6e4c7a49774d44417663335a6e496a344b50484268644767675a443069545451754f5459784e5459674d5334324d444178534449754d6a51784e545a444d5334344f446778494445754e6a41774d5341784c6a59774d545532494445754f4467324e6a51674d5334324d4445314e6941794c6a49304d4446574e4334354e6a4178517a45754e6a41784e5459674e53347a4d544d314e6941784c6a67344f4445674e5334324d444178494449754d6a51784e5459674e5334324d444178534451754f5459784e545a444e53347a4d5455774d6941314c6a59774d4445674e5334324d4445314e6941314c6a4d784d7a5532494455754e6a41784e5459674e4334354e6a4178566a49754d6a51774d554d314c6a59774d545532494445754f4467324e6a51674e53347a4d5455774d6941784c6a59774d4445674e4334354e6a45314e6941784c6a59774d4446614969426d615778735053496a5a6d5a6d496938253242436a78775958526f49475139496b30304c6a6b324d545532494445774c6a4d354f546c494d6934794e4445314e6b4d784c6a67344f4445674d5441754d7a6b354f5341784c6a59774d545532494445774c6a59344e6a51674d5334324d4445314e6941784d5334774d7a6b35566a457a4c6a63314f546c444d5334324d4445314e6941784e4334784d544d30494445754f4467344d5341784e43347a4f546b35494449754d6a51784e5459674d5451754d7a6b354f5567304c6a6b324d545532517a55754d7a45314d4449674d5451754d7a6b354f5341314c6a59774d545532494445304c6a45784d7a51674e5334324d4445314e6941784d7934334e546b35566a45784c6a417a4f546c444e5334324d4445314e6941784d4334324f445930494455754d7a45314d4449674d5441754d7a6b354f5341304c6a6b324d545532494445774c6a4d354f546c614969426d615778735053496a5a6d5a6d496938253242436a78775958526f49475139496b30784d7934334e546730494445754e6a41774d5567784d5334774d7a6730517a45774c6a59344e5341784c6a59774d4445674d5441754d7a6b344e4341784c6a67344e6a5930494445774c6a4d354f4451674d6934794e444178566a51754f5459774d554d784d43347a4f546730494455754d7a457a4e5459674d5441754e6a6731494455754e6a41774d5341784d5334774d7a6730494455754e6a41774d5567784d7934334e546730517a45304c6a45784d546b674e5334324d444178494445304c6a4d354f4451674e53347a4d544d314e6941784e43347a4f546730494451754f5459774d5659794c6a49304d4446444d5451754d7a6b344e4341784c6a67344e6a5930494445304c6a45784d546b674d5334324d4441784944457a4c6a63314f4451674d5334324d444178576949675a6d6c736244306949325a6d5a69497650676f38634746306143426b50534a4e4e4341784d6b77784d694130544451674d544a614969426d615778735053496a5a6d5a6d496938253242436a78775958526f49475139496b303049444579544445794944516949484e30636d39725a54306949325a6d5a694967633352796232746c4c5864705a48526f505349784c6a556949484e30636d39725a5331736157356c5932467750534a79623356755a43497650676f384c334e325a7a344b266c6f676f436f6c6f723d666666666666)](https://zread.ai/Zjmainstay/php-curl)

依赖
--

[](#依赖)

PHP: &gt;=5.4

单独使用
----

[](#单独使用)

```
git clone https://github.com/Zjmainstay/php-curl.git
cd php-curl
composer install
#测试
php demo/1_simpleAutoLogin.php
```

composer引入
----------

[](#composer引入)

```
composer require zjmainstay/php-curl

#测试
cd vendor/zjmainstay/php-curl
composer install
php demo/1_simpleAutoLogin.php
```

直接引入类
-----

[](#直接引入类)

```
require_once __DIR__.'/../src/CurlAutoLogin.php'; # 使用时注意路径
$autologin = new PHPCurl\CurlAutoLogin();

# 参考demo/0_simpleAutoLogin.php
```

CurlAutoLogin 介绍
----------------

[](#curlautologin-介绍)

### 属性

[](#属性)

```
//最后一次cookie存储文件
protected $lastCookieFile = '';
//登录成功后，锁定cookie的更新
protected $lockedLastCookieFile = false;
//日志路径
protected $logPath = '';
//全局opt，方便使用代理之类的请求
protected $globalOpts = [];
//最后一次请求参数，用于重放请求
protected $lastExecParams = [];
```

### 方法

[](#方法)

```
// ================== 1.常用方法 ==================
//根据curl信息执行并解析结果，核心方法常用方法之一
public function execCurl($curlContent, $callbackBefore = false, $callbackAfter = false, $storeParams = true)

//携带cookie执行curl命令，核心方法常用方法之一，直接利用curl命令里的header头cookie参数
public function execCurlWithCookie($curlContent, $callbackBefore = false, $callbackAfter = false)

// ================== 2.普通公用方法 ==================
//设置全局请求opt（方便使用代理之类的请求）
public function setGlobalOpts($opts = [])

//重放请求，依赖登录的场景出现登录失败的情况，重新登录后，调用此方法重试上一次的请求
public function repeatRequest()

//获取最后一次请求参数，用于重放请求
public function getLastExecParams()

//主动销毁最后一次请求参数
public function unsetLastExecParams()

//解析curl信息，返回结果包含url/header/post/opt/cookie，post是post提交的数据，opt是curl备用扩展
public function parseCurl($curlContent)

//设置日志路径
public function setLogPath($logPath)

//获取上一次存储cookie的文件
public function getLastCookieFile()

//获取最后一次存储的cookie内容
public function getLastCookieContent()

//手动追加cookie内容到最后一次存储的cookie文件
public function appendCookieContent($content)

//设置上一次存储cookie的文件
public function setLastCookieFile($cookieFile)

//清空上次存储的cookie
public function removeLastCookie()

//登录成功后，锁定上一次存储cookie的文件，避免覆盖
public function lockLastCookieFile()

//解锁上一次存储cookie的文件
public function unlockLastCookieFile()

//登录成功后，锁定cookie，可以基于get方式获取url信息
public function getUrl($url, $header = false)

//登录成功后，锁定cookie，可以基于post方式获取url信息
public function postUrl($url, $postData = false, $header = false)

//断言内容中包含某个字符（判断登录信息，如“退出”字眼）
public function assertContainStr($content, $substr)

//获取换行符，用于输出信息显示换行
public function getLineBreak()

//格式化header头cookie成文件存储格式
public function formatHeaderCookieToFileContent($headerCookie, $domain)

//从curl内容解析cookie内容并追加保存到cookie文件
public function addCookieFromCurl($curlContent, $domain)

// ================== 3.底层方法 ==================
//执行curl请求，底层核心方法，内置了请求的cookie存储与跟踪上一次请求的cookie，实现模拟登录cookie依赖
protected function _execCurl($parseCurlResult)

//记录日志，底层方法，出现异常时记录日志
protected function _log($msg)
```

demo介绍
------

[](#demo介绍)

```
//简易模拟登录示例，直接引用CurlAutoLogin类进行调用
0_simpleAutoLogin.php

//简易模拟登录示例，基于composer引用CurlAutoLogin类进行调用
//简介：包含execCurl回调$callbackBefore实现curl请求前替换用户名
1_simpleAutoLogin.php

//浏览器登录微信，利用登录后cookie进行后续访问
//简介：【代码已不可用，参考思路】
//方法一：利用execCurl前置回调添加cookie到header中
//方法二：直接调用parseCurl对curl命令进行解析，并组装包含cookie的header头进行请求
//方法三：直接调用execCurlWithCookie调用
2_wxqq.php

//预加载cookie，然后访问其他页面
//简介：模拟登录有时候依赖首页或者其他页面的cookie，所以需要调用execCurl先请求一次，存下该页面的cookie，再做后续的请求
3_preloadCookieAndVisit.php

//中国知网下载
//简介：增加CURLOPT_HEADER属性返回请求头信息，然后解析下载地址进行下载请求
7_cnki.net.php

//webqq发送消息
//简介：【功能已不可用】基于web2 qq 发送群消息和个人消息（注：频繁发送会导致账号锁定，慎用！！！）
8_webqq.php

//博客园模拟登录
//简介：【网站改版，功能已不可用】
//基于nodejs提供js加密处理，返回结果给php请求登录使用
11_cnblogLogin

//（验证码）坐车网登录
//简介：坐车网网页显示验证码，用户手动录入后提交给程序，实现模拟登录
12_zuocheWithCaptcha.php

//模拟登录360doc
//简介：360doc登录，中间有一层cookie依赖，类似demo 3_preloadCookieAndVisit.php
14_360doc.php

//为知笔记内容下载
//简介：利用js在控制台运行获取所有笔记采集链接，然后下载对应笔记
15_downloadWizNote.php

//页面采集通用方法
//简介：日常使用curl请求可用
16_commonCurl/curlPage.php

//（验证码）命令行下输入验证码登录dev.360.cn
//简介：命令行执行获取验证码，写入到文件，命令行等待录入验证码，录入后提交给程序，实现模拟登录
17_dev.360.cn_STDINCaptcha.php

//天眼查关键词搜索
//简介：【功能已不可用】天眼查关键词搜索，最终数据页有token依赖，提取后通过$callbackBefore传入
19_www.tianyancha.com.php

//（验证码）木蚂蚁用户登录
//简介：木蚂蚁用户登录，网页显示验证码，用户手动录入后提交给程序，实现模拟登录
20_u.mumayi.com_OnlineCaptcha.php

//环球外汇网即时行情数据采集
//简介：【页面改版已不需要这么复杂】
//加载页面，解析出js，调用phantomjs执行js获取cookie加密结果，交给php模拟程序调用
22_tools.cnforex.com-phantomjs-parse-js.php

//（验证码）好单库登录
//简介：命令行执行获取验证码，写入到文件，命令行等待录入验证码，录入后提交给程序，实现模拟登录
26_publish.haodanku.com.php

//阿里文学js解密
//简介：阿里文学网小说解析，基于phantomjs执行js进行内容解析
34_www.aliwx.com.cn

//图床图片上传
//简介：【网站502功能已不可用】访问初始页获取x-csrf-token，解析后通过$callbackBefore传入，实现模拟请求上传图片到图床网站
38_upload.otar.im_image_upload.php

//草料图片上传二维码解析
//简介：上传图片到草料，然后利用上传结果调用解析接口，获得解析结果
41_cli.im.php

//重放请求
//简介：首先模拟无登录态请求，异常后模拟登录，然后重放请求得到正常结果
48_request_repeat.php

//tophub.today抓取demo
//简介：知乎热榜网站抓取
61_tophub.today.php

//【精华推荐】为知笔记模拟登录后，批量下载笔记
//简介：本示例实现模拟登录与ares333/php-curl批量执行类库结合，演示如何模拟登录后，基于登录态进行批量下载笔记
62_curlmulti/62_wiz.cn.php

//基于curl解析得到PHP代码
parseCurlGetPhpCode.php
```

###  Health Score

47

—

FairBetter than 94% of packages

Maintenance67

Regular maintenance activity

Popularity28

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity65

Established project with proven stability

 Bus Factor1

Top contributor holds 100% 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 ~307 days

Recently: every ~414 days

Total

10

Last Release

389d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/9f92d1477ccce5bc1abfd57471b98d97af5050739640d1c524ddc634ab966fac?d=identicon)[Zjmainstay](/maintainers/Zjmainstay)

---

Top Contributors

[![Zjmainstay](https://avatars.githubusercontent.com/u/3349634?v=4)](https://github.com/Zjmainstay "Zjmainstay (72 commits)")

---

Tags

auto-logincurlphp-curlphp-curl-libraryphpphp-curlphp curl login

### Embed Badge

![Health badge](/badges/zjmainstay-php-curl/health.svg)

```
[![Health](https://phpackages.com/badges/zjmainstay-php-curl/health.svg)](https://phpackages.com/packages/zjmainstay-php-curl)
```

###  Alternatives

[hannesvdvreken/guzzle-debugbar

A Guzzle middleware that logs requests to debugbar's timeline

76410.4k1](/packages/hannesvdvreken-guzzle-debugbar)

PHPackages © 2026

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