PHP curl 带着 cookie 模拟提交,验证码超时

2020-02-22 13:25:29 +08:00
 nohello

ExceuteResultType: -1, Message: "验证码已超时失效,请重新输入。", Result: null

大佬帮我看看,啥问题

function request_post($url = '', $post_data = array()) { if (empty($url) || empty($post_data)) { return false; }

$o = "";
foreach ( $post_data as $k => $v ){
    $o.= "$k=" . urlencode( $v ). "&" ;
}
$post_data = substr($o,0,-1);

$postUrl = $url;
$curlPost = $post_data;
$ch = curl_init();//初始化 curl
curl_setopt($ch, CURLOPT_URL,$postUrl);
curl_setopt($curl, CURLOPT_REFERER, $postUrl);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); ;
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec($ch);
curl_close($ch);

return $data;

}

3124 次点击
所在节点    PHP
8 条回复
cst4you
2020-02-22 13:50:46 +08:00
1. 对方验证了时间
2. 单次有效
3. 有其他校验
l12ab
2020-02-22 14:06:37 +08:00
referer 那一行,你写的参数是$curl
moult
2020-02-22 18:32:45 +08:00
你$cookie 这个变量哪里定义的?
另外,有一个函数叫 http_build_query,你拼 post_data 的时候可以用。
buffzty
2020-02-22 18:57:50 +08:00
先用 postman 测试一下,你传的参数对不对.ok 了再去用代码写
HUALIAN
2020-02-22 20:05:18 +08:00
Cookie 和 协议头 的问题。
nohello
2020-02-23 12:57:31 +08:00
cookie 用的 CURLOPT_COOKIEJAR 保存的,获取验证码的 curl 里面保存的,我用 fiddler2 抓的,参数没有问题,Referer 那个后面复制过来的,那个参数复制错了,这个改了跟这个没关系,抓了 cookie,Hm_lvt_2c27f6e0da87610221a9d3a549f876bc=1582343317
Hm_lpvt_2c27f6e0da87610221a9d3a549f876bc=1582363920
Hm_lvt_c9c0128aec42c22340930c8062591842=1582343317
Hm_lpvt_c9c0128aec42c22340930c8062591842=1582363920
Hm_lvt_db4f828728fa6ba91665a269d396f166=1582343317
Hm_lpvt_db4f828728fa6ba91665a269d396f166=1582363920
Hm_lpvt_dc1d69ab90346d48ee02f18510292577=1582363087
Hm_lvt_dc1d69ab90346d48ee02f18510292577=1582363086
language=1,里面有一大堆,是不是跟这个有关系
ben1024
2020-02-25 13:50:35 +08:00
postman 里 clone code
encro
2020-02-29 16:29:07 +08:00
https://blog.csdn.net/syhd142/article/details/8525603


PHP 的 CURL 库中可以设置记录和读取 cookie。

有三个选项可以设置 cookie:

CURLOPT_COOKIE: 在 http 头中设置 cookie 的信息

CURLOPT_COOKIEJAR: 收到的 http responce 中 set-cookie 的存放路径

CURLOPT_COOKIEFILE: 发出的 http request 中 cookie 从哪里读取



最简单的方式:
http://www.phpernote.com/php-function/1371.html

curl_setopt($ch, CURLOPT_COOKIE, 'phpernote_uuid=201704592623c0cd921; phpernote_nick_name=haoxiangni; PHPSESSID=hjf6lashdk4fb7an8t047keq42; phpernote_uuid=x201804210994325adbeaa8f0c31; phpernote_nick_name=%E6%9D%A5%E8%87%AA%3C223.72.74.235%3E%E7%9A%84%E7%BD%91%E5%8F%8B; Hm_lvt_30d2c5bcff96aa0e131e06c9bc4980d4=1524361902; Hm_lpvt_30d2c3bcff96aa0e121e06c9bc4980d4=1524383891');


最后:
curl_setopt($ch, CURLOPT_HEADER, 0);去掉试下?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/646585

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX