当前位置: 首页 > 科技观察

php模拟用户自动在qq空间发文章的方法

时间:2023-03-15 17:21:46 科技观察

下面是一个简单的程序,用php模拟登录,然后发文章到QQ空间。有需要的朋友可以参考$method,'header'=>$header,'content'=>$postdata);//生成流$context=stream_context_create($opts);//发送请求,获取源码$yuanma=file_get_contents($url,false,$context);//是否需要将cookie保存到文件中,如果不是$cookiefileemptyif($cookiefile!=''){echo'需要保存cookie
';//判断保存的文件存在,如果不存在则创建if(!file_exists($cookiefile)){file_put_contents($cookiefile,'');}//获取cookie并保存$response=implode("rn",$http_response_header);//用正则模式匹配cookie$zengze="/Set-Cookie:(.*?)rn/";preg_match_all($zengze,$response,$cookie_arr);//有匹配,保存if(!emptyempty($cookie_arr[1])){$cookiestr=implode(';',$cookie_arr[1]);file_put_contents($cookiefile,$cookieistr);echo'保存cookie成功
';}elseecho'不匹配cookie
';}//endif($cookiefile!='')//返回源return$yuanma;}//endfunctionrequest($url,$referer,$postdata,$cookie,$cookiefile)//获取当前脚本URLfunctionGetCurUrl(){if(!emptyempty($_SERVER["REQUEST_URI"])){$scriptName=$_SERVER["REQUEST_URI"];$nowurl=$scriptName;}else{$scriptName=$_SERVER["PHP_SELF"];if(emptyempty($_SERVER["QUERY_STRING"])){$nowurl=$scriptName;}else{$nowurl=$scriptName."?".$_SERVER["QUERY_STRING"];}}return$nowurl;}//获取当前文件名$nowurl=GetCurUrl();//echo$nowurl;//表单输出,未提交时if(!isset($_POST['qq'])){echo'qq号:
g_tk:
标题:
Content:
';die();}/*提交参数说明:$_POST['qq']---用户QQ$_POST['g_tk']--这个参数很重要。获取该参数需要在发布时捕获提交的post地址后调用的g_tk=123456789,POSThttp://b1.qzone.qq.com/cgi-bin/blognewg_tk=123456789in/blog_add?g_tk=123456789$_POST['title']---文章标签Title,notempty$_POST['content']---文章内容,不为空*/header('Content-Type:text/html;charset=gb2312');set_time_limit(0);//ob_end_clean();//ob_start();//获取cookie文件,不存在则创建,退出程序$cookiefile=dirname(__FILE__).'\qq_cookie.txt';if(!file_exists($cookiefile)){echo'qq_cookie.txt不存在,自动创建,请填写抓包cookie
';file_put_contents($cookiefile,'');die('程序退出');}//存在,读取cookieelse{$cookie=file_get_contents($cookiefile);//登录cookie//$cookie=urlencode($cookie);}//echo'cookie:'.$cookie.'
';//构成发布页面的重要信息,post数据等//qq号if(emptyempty($_POST['qq'])||preg_match('/[^0-9]/is',$_POST['qq']))die('qq号错了,必须是一个number');else$qq=$_POST['qq'];//qq号if(emptyempty($_POST['g_tk'])||preg_match('/[^0-9]/is',$_POST['g_tk']))die('post重要参数g_tk无效,必须为数字,请使用抓取值');$g_tk=$_POST['g_tk'];$title=emptyempty($_POST['title'])?die('Titlemustnotbeempty'):$_POST['title'];//文章标题$content=emptyempty($_POST['content'])?die('内容不得为空为空'):$_POST['content'];//内容$category='个人日记';//分类$fabiao='http://b1.qzone.qq.com/cgi-bin/blognew/blog_add?g_tk='.$g_tk;//发布处理页面$referer='http://ctc.qzs.qq.com/qzone/v5/toolpages/fp_gbk.html';//来源页面$r1='http://user.qzone.qq.com/'.$qq.'/infocenter';//列出访问源页面$postdata='uin='.$qq.'&category='.urlencode($category).'&title='.urlencode($title).'&content='.urlencode($content).'&html='.urlencode(''.$content.'

').'&tweetflag=0&cb_autograph=1&topflag=0&needfeed=0&g_tk='.$g_tk.'&_fp_refer=http%3A%2F%2Fctc.qzs.qq.com%2Fqzone%2Fnewblog%2Fv5%2Feditor.html%3Fsource%3D1%7Chttp%3A%2F%2Fctc.qzs.qq.com%2Fqzone%2Fnewblog%2Fv5%2Feditor.html%3Fsource%3D1%3Chttp%3A%2F%2Fuser.qzone.qq.com%2F'.$qq.'%2Fmain';//postdata//$postdata=urlencode($postdata);//echo$postdata;//发送请求获取源码$yuanma=request($fabiao,$r1,$postdata,$cookie,'');if(strpos($yuanma,'发布成功'))echo$title.'发布成功
';elseecho'发布失败:右键查看源码,可以看到具体错误'.$yuanma;?>