2015-07-19 7,733 ℃
依旧是1年前放在百度空间上的代码,针对的是DSU每日签到插件,路径是plugin.php?id=dsu_paulsign:sign,论坛一般用的都是这个插件,因为是针对插件写的,所以DiscuzX论坛2.x,3.x都能使用。
唯一要注意的就是代码保存的时候编码要跟论坛使用的编码一致,编码不一样的话无法正常签到
<?php
/*
*DiscuzX系列论坛签到
*在代码里填上你的用户名和密码~
*By Perfare
*update 2014-3-23
*/
header("content-Type: text/html; charset=gbk");
function curl_get($url, $use = false, $save = false, $referer = null, $post_data = null){
global $cookie_file;
$ch=curl_init($url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//需要使用cookies
if($use){
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
}
//需要保存cookies
if($save){
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
}
//需要referer伪装
if(isset($referer))
curl_setopt($ch, CURLOPT_REFERER, $referer);
//需要post数据
if(is_array($post_data)) {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
}
$content = curl_exec($ch);
curl_close($ch);
return $content;
}
function get_formhash($res){
if(preg_match('/name="formhash" value="(.*?)"/i', $res, $matches))
return $matches[1];
else
exit('没有找到formhash');
}
//签到代码
$user = '这里填上你的用户名';//用户名
$pwd = '这里填上你的密码';//密码
//心情:开心,难过,郁闷,无聊,怒,擦汗,奋斗,慵懒,衰
//{"kx","ng","ym","wl","nu","ch","fd","yl","shuai"};
$qdxq = 'kx';//签到时使用的心情
$todaysay = '开心~~~';//想说的话
//论坛首页地址
$baseUrl = '这里填上论坛的地址';//结尾带上”/”
//账号登录地址
$loginPageUrl = $baseUrl.'member.php?mod=logging&action=login';
//账号信息提交地址
$loginSubmitUrl = $baseUrl.'member.php?mod=logging&action=login&loginsubmit=yes&loginhash=LNvu3';
//签到页面地址
$signPageUrl = $baseUrl.'plugin.php?id=dsu_paulsign:sign';
//签到信息提交地址
$signSubmitUrl = $baseUrl.'plugin.php?id=dsu_paulsign:sign&operation=qiandao&infloat=0&inajax=0';
//存放Cookies的文件
$cookie_file = tempnam('./temp','cookie');
//访问论坛登录页面,保存Cookies
$res=curl_get($loginPageUrl, false, true);
//获取DiscuzX论坛的formhash验证串
$formhash = get_formhash($res);
//构建登录信息
$login_array=array(
'username'=>$user,
'password'=>$pwd,
'referer'=>$baseUrl,
'questionid'=>0,
'answer'=>'',
'formhash'=>$formhash,
);
//携带cookie提交登录信息
$res=curl_get($loginSubmitUrl ,true, true, null, $login_array);
if(strpos($res, '欢迎您回来'))
{
//访问签到页面
$res=curl_get($signPageUrl, true, true);
//根据签到页面上的文字来判断今天是否已经签到
if(strpos($res, '您今天已经签到过了或者签到时间还未开始'))
{
$resultStr = '今天已签过到';
}
else
{
//获取formhash验证串
$formhash = get_formhash($res);
//构造签到信息
$post_data = array(
'qdmode' => 1,
'formhash' => $formhash,
'qdxq' => $qdxq,
'fastreply' => 0,
'todaysay' => $todaysay,
);
//提交签到信息
$res = curl_get($signSubmitUrl ,true, true, null, $post_data);
if(strpos($res, '签到成功'))
{
$resultStr = '签到成功';
}
else
{
$resultStr = '签到失败';
}
}
}
else
$resultStr = '登陆失败';
echo $resultStr;
unlink($cookie_file);//删除cookie文件
?>
如果直接整一个函数把签到部分套起来的话显示登录失败,不太会整php
要整请求头那些东西的吧
请问怎么用到云函数里面
“Notice: tempnam(): file created in the system’s temporary directory in D:\untitled1\12.php on line 66
Fatal error: Uncaught Error: Call to undefined function curl_init() in D:\untitled1\12.php:12 Stack trace: #0 D:\untitled1\12.php(69): curl_get(‘https://iya.app…’, false, true) #1 {main} thrown in D:\untitled1\12.php on line 12”
不知道为什么报错了,我用的ide是phpstorm
没有curl模块
楼主大大,这个可以实现批量帐号的签到吗
博主你好,想了解一下,直接保存为PHP文件,把账号信息和论坛信息修改了,丢PHP空间去,就可以每天自动登陆签到了吗?每天什么时候触发签到呢?在哪里看是否签到成功哦?
当然需要你自己设置定时任务,是否签到成功你可以登录论坛看,或者自己在后面补充相关代码
博主早啊,博主能把这个更新一下吗?我不会PHP,研究了几天,始终不行。登陆抓包返回的协议头被压缩过,Content-Encoding: gzip 返回的信息是编码过的。’欢迎您回来’ 不能判断是否登陆成功。一直卡在登陆失败。现在的登陆提交地址变成这样了:/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=LHCYp&inajax=1 博主你签到的论坛还能正常签到吗?有时间看看更新一下吧。还有就是temp好像要手动新建,不然就没有temp文件。
gzip添加一行curl_setopt($ch, CURLOPT_ENCODING, ‘gzip’);就行了
之前一直可以,最近看LOG提示:没有找到formhash
自己调试一下咯,改下formhash的正则
你好,print_r($res)没有显示,res是空的是什么原因?
这个编码是gb2312 gb2312-80?还是别的?
网页查看源代码charset字段看是什么编码,就把代码保存为什么编码
meta http-equiv=”Content-Type” content=”text/html; charset=gbk”
如何查看论坛使用的编码?
现在还可以使用吗?是不是上传到自己的虚拟主机后,填上论坛用户名,密码和论坛地址就可以使用了?
连DZ签到都能搞定 那么ifree的签到应该很容易搞定吧
能够帮我处理一下吗
签到地址
http://gx.189.cn/ifree/sign/index.jsp
可以有偿 穷人能给的不多 希望能够帮看看
每次都登录失败怎么办
尝试打印请求的返回$res看看就知道什么情况了
請問,現在這個個還能使用嗎
当然可以
请问一下,关于这个cookies这块,我用谷歌查出来这么多,不知道怎么用,请问这个要怎么使用呢
document.cookie
“DX27_d09b_lastvisit=1475584289; DX27_d09b_lastcheckfeed=649138%7C1475587915; BAS4_d09b_lastvisit=1475584331; DX27_d09b_nofavfid=1; DX27_d09b_forum_lastvisit=D_415_1475588530D_26_1475588658D_250_1475815896D_416_1475836582D_143_1476337708; DX27_d09b_visitedfid=513D143D416D415D290D250D512D317D294D302; DX27_d09b_smile=1D1; DX27_d09b_lip=116.52.13.178%2C1476337631; DX27_d09b_1476853534%09home.php%09spacecp; DX27_d09b_connect_is_bind=0”
直接用curl_setopt($ch,CURLOPT_COOKIE,$cookie);
谷歌浏览器 得到是这个
curl_setopt($ch,CURLOPT_COOKIE,$cookie);
VM178:1 Uncaught ReferenceError: curl_setopt is not defined(…)
貌似没法。 我找了资料,也没找打。。。
这段是PHP代码。。。
登入需要验证码的怎么解决Orz
利用cookies进行签到就行了