开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 315|回复: 14
收起左侧

[已解决] php大佬麻烦帮忙看一下这段代码

 关闭 [复制链接]
结帖率:96% (133/138)
发表于 2024-5-26 11:20:35 | 显示全部楼层 |阅读模式   山西省忻州市
10精币
[PHP] 纯文本查看 复制代码
<?php

function makeRequest($url, $headers) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    $response = curl_exec($ch);
    
    if ($response === false) {
        echo 'Curl error: ' . curl_error($ch);
    }
    
    curl_close($ch);
    
    return $response;
}

function checkQRCodeStatus($checkUrl, $headers) {
    // 发起请求并获取返回数据
    $response_check = makeRequest($checkUrl, $headers);
    
    // 解压缩返回的数据
    $data_check = gzdecode($response_check);
    
    if ($data_check !== false) {
        // 将 JSON 数据解码为 PHP 关联数组
        $decoded_data_check = json_decode($data_check, true);
        
        if ($decoded_data_check !== null) {
            // 输出解码后的数据
            echo json_encode($decoded_data_check, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
        } else {
            echo "Error decoding JSON data.";
        }
    } else {
        echo "Error decoding compressed data for check URL.";
    }
}

// 设置请求URL
$url = 'https://passport.weibo.com/sso/v2/qrcode/image?entry=miniblog&size=180';

// 设置请求头部信息
$headers = array(
   'Host: passport.weibo.com',
    'Connection: keep-alive',
    'sec-ch-ua: "Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"',
    'Accept: application/json, text/plain, */*',
    'X-Requested-With: XMLHttpRequest',
    'X-CSRF-TOKEN: CK-Yco1Rc7C-N7I9J_lspWCmc_DvD-DaAGc74zxH1-gacIgX1=',
    'sec-ch-ua-mobile: ?0',
    'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36',
    'sec-ch-ua-platform: "Windows"',
    'Sec-Fetch-Site: same-origin',
    'Sec-Fetch-Mode: cors',
    'Sec-Fetch-Dest: empty',
    'Referer: https://passport.weibo.com/sso/signin?entry=miniblog&source=miniblog&disp=popup&url=https%3A%2F%2Fweibo.com%2Fnewlogin%3Ftabtype%3Dweibo%26gid%3D102803%26openLoginLayer%3D0%26url%3Dhttps%253A%252F%252Fweibo.com%252F',
    'Accept-Encoding: gzip, deflate, br, zstd',
);

// 初始化 cURL 会话并获取二维码图片的 JSON 数据
$response = makeRequest($url, $headers);

// 解压缩返回的数据
$data = gzdecode($response);

if ($data !== false) {
    $json_data = json_decode($data, true);

    if ($json_data && isset($json_data['retcode']) && $json_data['retcode'] === 20000000) {
        $qrid = $json_data['data']['qrid'];
        echo "QR ID: " . $qrid . "<br>";
        // 显示原始获取到的图片
        echo '<img src="' . $json_data['data']['image'] . '" alt="QR Code" /><br>';
        // 构建新的请求URL
        $checkUrl = 'https://passport.weibo.com/sso/v2/qrcode/check?tabtype=weibo&gid=102803&openLoginLayer=0&url=https%3A%2F%2Fweibo.com%2F&qrid=' . $qrid . '&disp=popup';
        
        // 打印出 $checkUrl 以进行检查
        echo "Check URL: " . $checkUrl . "<br>";

        // 获取并输出二维码状态
        checkQRCodeStatus($checkUrl, $headers);
    } else {
        echo "Invalid JSON data or retcode is not 20000000.";
    }
} else {
    echo "Error decoding compressed data.";
}
?>

问题是这样子的,我是在宝塔直接运行的,我获取的二维码是可以正常扫码的,但是获取到是qird值我捕获状态调试的时候发现是“该二维码已过期,请重新扫描”,我前面还加了定时器,php代码里面显示的居然是未使用,但是没办法捕获到扫码成功的返回。大牛帮我看一下,我这个写法是不是有问题,

0f67bb174e9afa5bc78b24c9f68f988.png

最佳答案

查看完整内容

https://pzapi.lanzout.com/i780z1zuuw1a 看看这个代码是不是你想要的 上传不上来要审核

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:96% (117/122)

签到天数: 4 天

发表于 2024-5-26 11:20:36 | 显示全部楼层   广东省肇庆市
https://pzapi.lanzout.com/i780z1zuuw1a  看看这个代码是不是你想要的 上传不上来要审核
回复

使用道具 举报

签到天数: 11 天

发表于 2024-5-26 12:28:42 | 显示全部楼层   辽宁省抚顺市

[PHP] 纯文本查看 复制代码
<?php

function makeRequest($url, $headers) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    $response = curl_exec($ch);

    if ($response === false) {
        echo 'Curl error: ' . curl_error($ch);
    }

    curl_close($ch);

    return $response;
}

function checkQRCodeStatus($checkUrl, $headers) {
    $response_check = makeRequest($checkUrl, $headers);
    $data_check = gzdecode($response_check);

    if ($data_check !== false) {
        $decoded_data_check = json_decode($data_check, true);

        if ($decoded_data_check !== null) {
            echo json_encode($decoded_data_check, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
        } else {
            echo "Error decoding JSON data.";
        }
    } else {
        echo "Error decoding compressed data for check URL.";
    }
}

$url = 'https://passport.weibo.com/sso/v2/qrcode/image?entry=miniblog&size=180';

$headers = array(
    'Host: passport.weibo.com',
    'Connection: keep-alive',
    'sec-ch-ua: "Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"',
    'Accept: application/json, text/plain, */*',
    'X-Requested-With: XMLHttpRequest',
    'X-CSRF-TOKEN: CK-Yco1Rc7C-N7I9J_lspWCmc_DvD-DaAGc74zxH1-gacIgX1=',
    'sec-ch-ua-mobile: ?0',
    'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36',
    'sec-ch-ua-platform: "Windows"',
    'Sec-Fetch-Site: same-origin',
    'Sec-Fetch-Mode: cors',
    'Sec-Fetch-Dest: empty',
    'Referer: https://passport.weibo.com/sso/signin?entry=miniblog&source=miniblog&disp=popup&url=https%3A%2F%2Fweibo.com%2Fnewlogin%3Ftabtype%3Dweibo%26gid%3D102803%26openLoginLayer%3D0%26url%3Dhttps%253A%252F%252Fweibo.com%252F',
    'Accept-Encoding: gzip, deflate, br, zstd',
);

$response = makeRequest($url, $headers);
$data = gzdecode($response);

if ($data !== false) {
    $json_data = json_decode($data, true);

    if ($json_data && isset($json_data['retcode']) && $json_data['retcode'] === 20000000) {
        $qrid = $json_data['data']['qrid'];
        echo "QR ID: " . $qrid . "<br>";
        echo '<img src="' . $json_data['data']['image'] . '" alt="QR Code" /><br>';

        $checkUrl = 'https://passport.weibo.com/sso/v2/qrcode/check?tabtype=weibo&gid=102803&openLoginLayer=0&url=https%3A%2F%2Fweibo.com%2F&qrid=' . $qrid . '&disp=popup';
        echo "Check URL: " . $checkUrl . "<br>";

        // 使用 sleep 函数等待几秒钟以避免频繁请求
        sleep(5);

        checkQRCodeStatus($checkUrl, $headers);
    } else {
        echo "Invalid JSON data or retcode is not 20000000.";
    }
} else {
    echo "Error decoding compressed data.";
}
?>


回复

使用道具 举报

结帖率:96% (133/138)

签到天数: 14 天

 楼主| 发表于 2024-5-26 13:30:49 | 显示全部楼层   山西省忻州市
没有大佬吗
回复

使用道具 举报

结帖率:100% (2/2)

签到天数: 22 天

发表于 2024-5-26 14:20:11 | 显示全部楼层   辽宁省朝阳市
没看懂你说什么意思。代码看着没问题啊,。自己慢慢调试呗
回复

使用道具 举报

结帖率:96% (133/138)

签到天数: 14 天

 楼主| 发表于 2024-5-26 16:22:12 | 显示全部楼层   山西省忻州市
weidongjun 发表于 2024-5-26 14:20
没看懂你说什么意思。代码看着没问题啊,。自己慢慢调试呗

我知道没问题,但是拿到的数据有问题啊,我已经用易写好了的,同样的方式用Php就不行,还有就是php的写法我用手动调试也是正常的,就是运行有问题。qrid值是错误的值,没办法进行检测二维码状态
回复

使用道具 举报

结帖率:96% (117/122)

签到天数: 4 天

发表于 2024-5-26 20:20:23 | 显示全部楼层   广东省肇庆市
[PHP] 纯文本查看 复制代码
<?php
 
include_once "curl.php";
 

 
// 设置请求URL
$url = 'https://passport.weibo.com/sso/v2/qrcode/image?entry=miniblog&size=180';
 
// 设置请求头部信息
$headers = array(
   'Host: passport.weibo.com',
    'Connection: keep-alive',
    'sec-ch-ua: "Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"',
    'Accept: application/json, text/plain, */*',
    'X-Requested-With: XMLHttpRequest',
    'X-CSRF-TOKEN: CK-Yco1Rc7C-N7I9J_lspWCmc_DvD-DaAGc74zxH1-gacIgX1=',
    'sec-ch-ua-mobile: ?0',
    'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36',
    'sec-ch-ua-platform: "Windows"',
    'Sec-Fetch-Site: same-origin',
    'Sec-Fetch-Mode: cors',
    'Sec-Fetch-Dest: empty',
    'Referer: https://passport.weibo.com/sso/signin?entry=miniblog&source=miniblog&disp=popup&url=https%3A%2F%2Fweibo.com%2Fnewlogin%3Ftabtype%3Dweibo%26gid%3D102803%26openLoginLayer%3D0%26url%3Dhttps%253A%252F%252Fweibo.com%252F',
    'Accept-Encoding: gzip, deflate, br, zstd',
);
 
// 初始化 cURL 会话并获取二维码图片的 JSON 数据
$response = pz_curl($url, "", 0, $headers);
 
// 解压缩返回的数据
$data = gzdecode($response);
 
if ($data !== false) {
    $json_data = json_decode($data, true);
 
    if ($json_data && isset($json_data['retcode']) && $json_data['retcode'] === 20000000) {
        $qrid = $json_data['data']['qrid'];
        echo "QR ID: " . $qrid . "<br>";
        // 显示原始获取到的图片
        echo '<img src="' . $json_data['data']['image'] . '" alt="QR Code" /><br>';
        // 构建新的请求URL
        $checkUrl = 'https://passport.weibo.com/sso/v2/qrcode/check?tabtype=weibo&gid=102803&openLoginLayer=0&url=https%3A%2F%2Fweibo.com%2F&qrid=' . $qrid . '&disp=popup';
         
        // 打印出 $checkUrl 以进行检查
        echo "Check URL: " . $checkUrl . "<br>";
 
        // 获取并输出二维码状态
        checkQRCodeStatus($checkUrl, $headers);
    } else {
        echo "Invalid JSON data or retcode is not 20000000.";
    }
} else {
    echo "Error decoding compressed data.";
}
?>
回复

使用道具 举报

结帖率:96% (117/122)

签到天数: 4 天

发表于 2024-5-26 21:19:58 | 显示全部楼层   广东省肇庆市
curl的问题
回复

使用道具 举报

结帖率:96% (133/138)

签到天数: 14 天

 楼主| 发表于 2024-5-26 21:23:51 | 显示全部楼层   山西省忻州市

我这边使用了原生的php请求获取到的也是不行,大佬有什么办法解决吗
回复

使用道具 举报

结帖率:96% (133/138)

签到天数: 14 天

 楼主| 发表于 2024-5-26 21:43:35 | 显示全部楼层   山西省忻州市

老哥,我用了file_get_contents()函数和stream_context_create()函数来发送HTTP请求,获取的数据还是过期的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表