sina blog转发爬

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css">
</head>
<body style="background-color: gray;">
    <div class="container">
    
        <form method="get">

        <h4>你的cookie:</h4>
        <textarea name="cookie" class="form-control" rows="3" placeholder="你的cookie,调试里面粘贴过来"></textarea>


        <h4>某篇微博id:</h4>
            <input name="id" type="number" class="form-control" placeholder="点开一篇微博时地址栏的一串数字">

        
        <h4>功能:</h4>
            <select class="form-control" name="scene">
              <option value="转发">转发</option>
            </select>

        <h4>操作多少次:</h4>
            <select class="form-control" name="count">
              <option value="100">10</option>
              <option value="100">100</option>
              <option value="500">500</option>
              <option value="1000">1000</option>
              <option value="5000">5000</option>
              <option value="10000">10000</option>
            </select>

            <button style="margin-top: 50px;width: 100%;" class="btn btn-default" type="submit">GOGOGO</button>
        </form>
   </div>   
</body>
</html>




<?php
/*header("Content-type: text/html; charset=utf-8");*/
ignore_user_abort(); //关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0); // 通过set_time_limit(0)可以让程序无限制的执行下去




if(!isset($_GET['cookie'])||!isset($_GET['count'])||!isset($_GET['id'])){
    return;
}

if($_GET['cookie']==''||$_GET['count']==''||$_GET['id']==''){
    echo '<h1>表单不全!</h1>';
    return;
}



/*print_r($_GET);*/


$id = $_GET['id'];
$cookie = $_GET['cookie'];
$count = $_GET['count'];


while($count>0){
   
    $stData = json_decode( getSt($cookie),true);
    if($stData['data']['login']=='true'){
        $st = $stData['data']['st'];
        echo '登陆成功<br>';
    }else{
        echo '登陆失败:'.json_encode($stData).'<br>';
        break;
    }
    ob_flush(); //输出缓冲
    flush(); 

    $result = json_decode(resport($id,$st,$cookie),true) ;

    if($result['ok']!='1'){
        echo  '操作失败:'.json_encode($result).'<br>';
        echo '程序暂停半小时再开启<br>';
        ob_flush(); //输出缓冲
        flush(); 
        //如果失败,休息半小时吧
        sleep(60*10);
    }else{
        echo '成功<br>';
        ob_flush(); //输出缓冲
        flush();         
    }

    $count--;
    sleep(30);
}



function getWord(){
    $data = ['[爱你]','[拜拜]','[抱抱]','[悲伤]','[并不简单]','[鄙视]','[闭嘴]','[馋嘴]','[吃瓜]','[吃惊]','[哈欠]','[打脸]','[顶]','[费解]','[感冒]','[跪了]','[鼓掌]','[哈哈]','[害羞]','[汗]','[微笑]','[笑而不语]','[黑线]','[哼]','[坏笑]','[色]','[挤眼]','[可爱]','[可怜]','[酷]','[骷髅]','[困]','[白眼]','[泪]','[怒]','[怒骂]','[钱]','[亲亲]','[傻眼]','[生病]','[失望]','[衰]','[睡]','[思考]','[太开心]','[摊手]','[舔屏]','[偷笑]','[吐]','[挖鼻]','[委屈]','[污]','[笑cry]','[憧憬]','[嘻嘻]','[嘘]','[互粉]','[抓狂]','[允悲]','[晕]','[右哼哼]','[疑问]','[阴险]','[奥特曼]'];

    return $data[rand(0,count($data)-1)].$data[rand(0,count($data)-1)].$data[rand(0,count($data)-1)].$data[rand(0,count($data)-1)].$data[rand(0,count($data)-1)];
}

//转发
function resport($id,$st,$cookie){
    $url = 'https://m.weibo.cn/api/statuses/repost';
    $referer = 'https://m.weibo.cn/compose/repost?id='.$id;
    $data = [
        'id'=>$id,
        'content'=>getWord(),
        'visible'=>'1',
        'mid'=>$id,
        'st'=>$st
    ];
    return _grab($url,$data,$cookie,$referer);
}



//拿到st(发帖转发必须)
function getSt($cookie){
    $configUrl = 'https://m.weibo.cn/api/config';
    $result = _grab($configUrl,'',$cookie); 
    return  $result;
}

//爬虫
function _grab($curl,$postInfo='',$cookie='',$referer=''){
     $ch = curl_init();  
     curl_setopt($ch, CURLOPT_URL, $curl);  
     //不输出头
     curl_setopt($ch, CURLOPT_HEADER, 0);   
     //以字符串返回获取的信息,不直接输出
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

     //如果是https链接,不验证证书
     if(substr_count($curl,'https')){
         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
     }
     //POST
     if($postInfo){
        curl_setopt($ch,CURLOPT_POST,1);
        curl_setopt($ch,CURLOPT_POSTFIELDS,$postInfo);
     }
     //加入cookie
     if($cookie){
         curl_setopt($ch,CURLOPT_COOKIE,$cookie);
     }
     //模拟来路
     if($referer){
        curl_setopt($ch, CURLOPT_REFERER, $referer);
     }
    
       //模拟浏览器
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36');

     //执行
     $content = curl_exec($ch);  
     //错误处理
     if ($content  === false) {  
       return "网络请求出错: " . curl_error($ch);  
       exit();  
     }  
     return $content;
}

?>

猜你喜欢

转载自www.cnblogs.com/cl94/p/9568204.html