<!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;
}
?>