V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nohello
V2EX  ›  PHP

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

  •  
  •   nohello · 2020-02-22 13:25:29 +08:00 · 3271 次点击
    这是一个创建于 1740 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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;
    

    }

    8 条回复    2020-02-29 16:29:07 +08:00
    cst4you
        1
    cst4you  
       2020-02-22 13:50:46 +08:00
    1. 对方验证了时间
    2. 单次有效
    3. 有其他校验
    l12ab
        2
    l12ab  
       2020-02-22 14:06:37 +08:00 via iPhone
    referer 那一行,你写的参数是$curl
    moult
        3
    moult  
       2020-02-22 18:32:45 +08:00
    你$cookie 这个变量哪里定义的?
    另外,有一个函数叫 http_build_query,你拼 post_data 的时候可以用。
    buffzty
        4
    buffzty  
       2020-02-22 18:57:50 +08:00
    先用 postman 测试一下,你传的参数对不对.ok 了再去用代码写
    HUALIAN
        5
    HUALIAN  
       2020-02-22 20:05:18 +08:00
    Cookie 和 协议头 的问题。
    nohello
        6
    nohello  
    OP
       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
        7
    ben1024  
       2020-02-25 13:50:35 +08:00
    postman 里 clone code
    encro
        8
    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);去掉试下?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3723 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 10:42 · PVG 18:42 · LAX 02:42 · JFK 05:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.