@@ -17,6 +17,8 @@ class CurlAutoLogin {
17
17
protected $ logPath = '' ;
18
18
//全局opt
19
19
protected $ globalOpts = [];
20
+ //最后请求参数
21
+ protected $ lastExecParams = [];
20
22
21
23
public function __construct ($ logPath = '' ) {
22
24
if (!empty ($ logPath ) && is_writable ($ logPath )) {
@@ -33,16 +35,22 @@ public function __construct($logPath = '') {
33
35
public function setGlobalOpts ($ opts = [])
34
36
{
35
37
$ this ->globalOpts += $ opts ;
38
+ return $ this ;
36
39
}
37
40
38
41
/**
39
42
* 根据curl信息执行并解析结果
40
43
* @param string $curlContent 利用Firefox浏览器复制cURL命令
41
44
* @param boolean $callbackBefore 对curl结果前置处理,如更换用户名、密码等
42
45
* @param boolean $callbackAfter 对采集结果后置处理,如解析结果的csrf token等
46
+ * @param boolean $storeParams 是否存储最后请求参数供重放使用,默认存储
43
47
* @return mixed
44
48
*/
45
- public function execCurl ($ curlContent , $ callbackBefore = false , $ callbackAfter = false ) {
49
+ public function execCurl ($ curlContent , $ callbackBefore = false , $ callbackAfter = false , $ storeParams = true ) {
50
+ //存储参数供请求重放使用
51
+ if ($ storeParams ) {
52
+ $ this ->lastExecParams = func_get_args ();
53
+ }
46
54
$ parseCurlResult = $ this ->parseCurl ($ curlContent );
47
55
if (is_callable ($ callbackBefore )) {
48
56
$ parseCurlResult = $ callbackBefore ($ parseCurlResult );
@@ -57,6 +65,39 @@ public function execCurl($curlContent, $callbackBefore = false, $callbackAfter =
57
65
return $ execCurlResult ;
58
66
}
59
67
68
+ /**
69
+ * 重放请求
70
+ * @return mixed
71
+ */
72
+ public function repeatRequest ()
73
+ {
74
+ //最后一次请求参数不为空才重放
75
+ if (!empty ($ this ->lastExecParams )) {
76
+ list ($ curlContent , $ callbackBefore , $ callbackAfter ) = array_pad ($ this ->lastExecParams , 3 , false );
77
+ return $ this ->execCurl ($ curlContent , $ callbackBefore , $ callbackAfter , true );
78
+ }
79
+ return null ;
80
+ }
81
+
82
+ /**
83
+ * 获取最后一次请求参数
84
+ * @return array
85
+ */
86
+ public function getLastExecParams ()
87
+ {
88
+ return $ this ->lastExecParams ;
89
+ }
90
+
91
+ /**
92
+ * 主动销毁最后一次请求参数
93
+ * @return $this
94
+ */
95
+ public function unsetLastExecParams ()
96
+ {
97
+ $ this ->lastExecParams = [];
98
+ return $ this ;
99
+ }
100
+
60
101
/**
61
102
* 携带cookie执行curl命令
62
103
* @param string $curlContent 利用Firefox浏览器复制cURL命令
@@ -195,6 +236,7 @@ protected function _execCurl($parseCurlResult) {
195
236
*/
196
237
public function setLogPath ($ logPath ) {
197
238
$ this ->logPath = $ logPath ;
239
+ return $ this ;
198
240
}
199
241
200
242
/**
@@ -230,13 +272,15 @@ public function setLastCookieFile($cookieFile) {
230
272
if (!$ this ->lockedLastCookieFile ) {
231
273
$ this ->lastCookieFile = $ cookieFile ;
232
274
}
275
+ return $ this ;
233
276
}
234
277
235
278
/**
236
279
* 清空上次存储的cookie
237
280
*/
238
281
public function removeLastCookie () {
239
282
file_put_contents ($ this ->getLastCookieFile (), '' );
283
+ return $ this ;
240
284
}
241
285
242
286
/**
@@ -245,6 +289,7 @@ public function removeLastCookie() {
245
289
*/
246
290
public function lockLastCookieFile () {
247
291
$ this ->lockedLastCookieFile = true ;
292
+ return $ this ;
248
293
}
249
294
250
295
/**
@@ -253,6 +298,7 @@ public function lockLastCookieFile() {
253
298
*/
254
299
public function unlockLastCookieFile () {
255
300
$ this ->lockedLastCookieFile = false ;
301
+ return $ this ;
256
302
}
257
303
258
304
/**
0 commit comments