IT基地
用户登陆
我要注册
用户名或密码错误
登 陆
注 册
IT基地 > 李蓝猫的博客 > 我要发文
php实现获取“七号电单车优惠券”
作者:李蓝猫   发布时间:2018-07-25 17:46:27   点击数:356
原理是运用七号电单车邀请好友送优惠券规则实现增加个人账户的优惠券数量

image.png


主干思路


1.通过微信分享邀请链接 通过抓包获取发送短信

请求地址

https://api.number-7.cn/web/activity/v1/user/seccode?mobile=17600100143&_=1532509683438
&callback=Zepto1532509650951

地址分析

?后为参数
mobile=17600100143 此处参数为手机号码
&_=1532509683438&callback=Zepto1532509650951 因分享链接不同,此处每个人的都不一样,需要替换为自己对应的参数

返回参数

/**/Zepto1532509650951({"msg":"\u5df2\u53d1\u9001","code":0});
由于返回参数不是正常json所以需要剔除多余部分 剩下{"msg":"\u5df2\u53d1\u9001","code":0}用于解析
PHP处理方式 $res = substr($string, strpos($string,'{'),-2);
Python处理方式 res = string[string.index('{'):-2]


image.png



2.通过抓包地址进行程序调用发送短信请求验证

请求地址

https://api.number-7.cn/web/activity/v1/receive/invite?mobile=17600100143&code=2345

&_a=397119&_b=1532509281&city_id=1&_=1532509805369&callback=Zepto1532509650952

地址分析

?后为参数
mobile=17600100143 此处参数为手机号码
code=2345          此处为验证码
&_a=397119&_b=1532509281&city_id=1 无实际意义
&_=1532509805369&callback=Zepto1532509650952 因分享链接不同,此处每个人的都不一样,需要替换为自己对应的参数

返回参数

/**/Zepto1532509650952({"code":90001,"msg":"\u9a8c\u8bc1\u7801\u9a8c\u8bc1\u5931\u8d25"}
同请求发送验证码一样,这个也需要处理为可以使用的json,方法同上


image.png


拿到了主要地址以后我们迫切需要若干个手机号来接收验证码 以实现我们的目的

推荐应用码平台 

http://www.eobzz.com/

目前接码比较稳定


流程为

 批量获取接码平台的手机号码

 循环手机号 进行调用七号电单车发送短信接口

 因接码平台延迟故需要程序停顿(睡眠)30秒左右,进行获取码平台验证码

 调用七号电单车验证短信接口


代码如下

php版本


<?php
class Index
{
    private $uid = '**********';  //短信验证码平台账号
    private $pawd = '**********';  //短信验证码平台密码
    private $size = 10;
    private $projectId = 29323;    //项目ID
    private $smsreqUrl = "http://api.eobzz.com";

    public function index()
    {
        @ini_set('implicit_flush',1);
        ob_implicit_flush(1);
        @ob_end_clean();
        $token = $this->loginIn();
        $res = $this->getMobilenum($this->projectId,$token);
        echo str_pad('',4096)."<br>";
        foreach ($res as $key => $value) {

        $sendSmsInfo = $this->sendSms($value);
        echo str_pad('',4096)."<br>";
        echo "发送状态:".$sendSmsInfo;
        echo str_pad('',4096)."<br>";
        echo "手机号码:".$value;
        echo str_pad('',4096)."<br>";
        echo "30秒后执行<br>";
        for ($i=0; $i < 30; $i++) {
        echo str_pad('',4096);
        echo $i.'秒';
        sleep(1);
        }
        $Vcode = $this->getVcodeAndReleaseMobile($value,$token);
        $Vcode = explode('】',$Vcode);
        $Vcode = explode('(',$Vcode[1]);
        echo str_pad('',4096)."<br>";
        echo "验证码为:".$Vcode[0];

        $veriy = $this->veriy($value,$Vcode[0]);
        echo str_pad('',4096)."<br>";
        echo "返回代码:".$veriy;
        echo str_pad('',4096)."<br>";
        $num = $key+1;
        echo "结束第{$num}次循环";
        }
        echo "<script> location.reload() </script>";
    }

    public function fasong(){
        $token = $this->loginIn();
        $Vcode = $this->getVcodeAndReleaseMobile('18245475381',$token);
        var_dump($Vcode);
    }

    public function demo($value='')
    {
        //var_dump(ini_get('output_buffering'));
        //var_dump(ini_get('output_buffering'));
        @ini_set('implicit_flush',1);
        ob_implicit_flush(1);
        @ob_end_clean();
        echo str_pad('',4096)."<br>";
        for ($i=0; $i < 10; $i++) {
        echo str_pad('',4096)."<br>";
        echo $i;
        //sleep(1);
        }
    }

    //电单车验证码发送
    public function sendSms($tel){
        //此处替换为发送短信接口 注意不要{}内不要修改
        //$url = "https://api.number-7.cn/web/activity/v1/user/seccode?mobile={$tel}&_=1528093272285&callback=Zepto1528093257514";
        $res = http_request($url);
        $res = substr($res, strpos($res,'{'),-2);
        $res = json_decode($res,true);
        return $res['msg'];
    }

    //电单车验证
    public function veriy($tel,$code){
        //此处替换为发送短信请求验证接口 注意不要{}内不要修改
        //$url = "https://api.number-7.cn/web/activity/v1/receive/invite?mobile={$tel}&code={$code}&_a=1714044&_b=1528093118&city_id=1&_=1528093318386&callback=Zepto1528093257515";
        $res = http_request($url);
        $res = substr($res, strpos($res,'{'),-2);
        $res = json_decode($res,true);
        return $res['code'];
    }

    //速码登录
    public function loginIn($value='')
    {
        $url = $this->smsreqUrl."/httpApi.do?action=loginIn&uid={$this->uid}&pwd={$this->pawd}";
        $res = http_request($url);
        $res = explode('|' ,$res);
        return $res[1];
    }

    //速码获取手机号码
    public function getMobilenum($projectId,$token){
        $url = $this->smsreqUrl."/httpApi.do?action=getMobilenum&pid={$projectId}&uid={$this->uid}&token={$token}&mobile=&size={$this->size}";
        $res = http_request($url);
        $res = explode('|', $res);
        $res = explode(';', $res[0]);
        return $res;
    }

    //已获取号码列表
    public function getRecvingInfo($projectId,$token)
    {
        $url = $this->smsreqUrl."/httpApi.do?action=getRecvingInfo&uid={$this->uid}&pid={$projectId}&token={$token}";
        $res = http_request($url);
        var_dump($res);
    }

    //速码获取验证码
    public function getVcodeAndReleaseMobile($mobile,$token)
    {
        $url = $this->smsreqUrl."/httpApi.do?action=getVcodeAndReleaseMobile&uid={$this->uid}&token={$token}&mobile={$mobile}";
        $res = http_request($url);
        if($res=='not_receive'){
        $this->getVcodeAndReleaseMobile($mobile,$token);
        }else{
        return $res;
        }
    }

    public function phpinfo(){
        echo phpinfo();
    }
}


本站部分数据来自软件的自动采集,仅用于学习交流,决不用于商用,如有侵犯您的合法权益,请联系我们删除。
发表技术文档,,记录个人生活,聚集意见领袖,众多IT精英,以我们的技术让开发更便捷。
IT基地版权所有,伪版必究 京ICP备17064610号-1
微信 QQ空间 QQ好友 新浪微博 Facebook Twitter
0.0326s