在php 模仿登录我们需要使用curl_init函数,下面我来介绍利用 curl 模拟 post 登录discuz论坛并且实现自动顶帖功能。

其实模拟登录就那点事,无法就是获得相应的参数,然后模拟发送,把获得的COOKIE 带入下一步操作中去

discuzx 系列为防止灌水,一直在用 formhash() 这个函数:

1、下面来看下formhash 这个函数:

代码如下

复制代码

function formhash($specialadd = '') {

global $_G;

$hashadd = defined('IN_ADMINCP') ? 'Only For Discuz! Admin Control Panel' : '';

return substr(md5(substr($_G['timestamp'],0,-7).$_G['username'].$_G['uid'].$_G['authkey'].$hashadd.$specialadd), 8, 8);

}

注:生成方式:

1、截取的时间戳

2、用户名

3、用户ID

4、authkey

5、hashadd(定值)

6、specialadd(定值)

因为存在用户名和用户id ,所以 在登录前跟登录后的 产生的值是不同的,即:在登录前跟登录后你要2次来获得fromhash;

那么authkey又是个什么东西呢 ?

2、关于authkey

//代码位置:/source/class/discuz/discuz_application.php

代码如下

复制代码

if(empty($this->var['cookie']['saltkey'])) {

$this->var['cookie']['saltkey'] = random(8);//这一步不要去管

dsetcookie('saltkey', $this->var['cookie']['saltkey'], 86400 * 30, 1, 1);

}

$this->var['authkey'] = md5($this->var['config']['security']['authkey'].$this->var['cookie']['saltkey']);

在这里可以看到:authkey是根据配置文件的authkey 和cookie 里面的saltkey 来生成的

其实在这里就可以看出来了, 只要网站的$this->var['cookie']['saltkey'] 这个值始终保存在cookie里面就这样就可以保证 formhash 那里生成的值永远是一样的(永远是相对的)

这里还要说一点:

3 cookie系列

discuz 的cookie的前缀是随机生成的

代码位置:/source/class/discuz/discuz_application.php

代码如下

复制代码

$this->var['config']['cookie']['cookiepre'] = $this->var['config']['cookie']['cookiepre'].substr(md5($this->;var['config']['cookie']['cookiepath'].'|'.$this->;var['config']['cookie']['cookiedomain']), 0, 4).'_';

只要你登录下网站看看cookie 的设置这里就可以了,他的前缀确实hi一直不变的,当然改了配置文件那肯定会变

到底该怎么写呢:说下我实现的思路

1、登录下访问网站一下抓取网页返回的 saltkey(cookie),formhash(值) 这两个值(saltkey在下面一定要带上,而且上下文要一致)

2、构造登录的内容然后模拟post 提交 (一定要带上第一步抓取到的cookie跟formhash 这一个值)

3、如果登录成功,接着获取一个页面的 formhash 跟设置的cookie(这次获得到的formhash 就是你可以一直使用的了)

4、构造发帖还有顶帖的post 提交到页面 (cookie 跟formhash 还是重点 )

关于php 使用 crul 模拟 post 部分代码

代码如下

复制代码

$ch = curl_init($url); //初始化

curl_setopt($ch, CURLOPT_HEADER, 1); //不返回header部分

curl_setopt($ch, CURLOPT_POST, 1);//是否

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //返回字符串,而非直接输出

curl_setopt($ch,CURLOPT_REFERER,$refer);

curl_setopt($ch, CURLOPT_COOKIE, $tocookies); //存储cookies

curl_setopt($ch, CURLOPT_POSTFIELDS, $datas);

代码就不共享了,有能力的朋友自己写把; 这东西容易引起混乱

http://www.bkjia.com/PHPjc/629893.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/629893.htmlTechArticle在php 模仿登录我们需要使用curl_init函数,下面我来介绍利用 curl 模拟 post 登录discuz论坛并且实现自动顶帖功能。 其实模拟登录就那点事,无...

php discuz 顶,discuz模拟登录实现自动顶帖php程序_PHP教程相关推荐

  1. php discuz 顶,discuz模拟登录实现自动顶帖php程序 - Discuz

    discuz模拟登录实现自动顶帖php程序 在php 模仿登录我们需要使用curl_init函数,下面我来介绍利用 curl 模拟 post 登录discuz论坛并且实现自动顶帖功能. 其实模拟登录就 ...

  2. 京东模拟登录,自动完成滑块验证

    最近在研究滑块验证码这一块,自然也玩了一把京东,发现之前的轨迹方程并不可用,需要自己慢慢调试,找到合适的参数.这种滑块认证的成功率不可能是100%,所以要写个循环,让认证失败的时候重新调用. 先看效果 ...

  3. appium+python+夜神模拟器 实现QQ的模拟登录与自动发消息

    实现的效果在网盘 链接:https://pan.baidu.com/s/1tgLUJoXewOu0qQLp6ylu8A 提取码:sfnf 用到的工具: 夜神模拟器 appium pycharm cmd ...

  4. python模拟登录webspare_全面解读python web 程序的9种部署方式

    python有很多web 开发框架,代码写完了,部署上线是个大事,通常来说,web应用一般是三层结构 web server ---->application -----> DB serve ...

  5. php防止模拟请求,php防止伪造跨站请求实现程序_PHP教程

    class Crumb { CONST SALT = "your-secret-salt"; static $ttl = 7200; static public function ...

  6. python模拟登录详细教程_Python模拟登录requests.Session应用详解

    最近由于某些原因,需要用到Python模拟登录网站,但是以前对这块并不了解,而且目标网站的登录方法较为复杂, 所以一下卡在这里了,于是我决定从简单的模拟开始,逐渐深入地研究下这块. 注:本文仅为交流学 ...

  7. python爬虫分析模拟登录时会变的参数_Python爬虫之urllib模拟登录及cookie的那点事...

    在web  sprider crawl过程中,许多网站都需要登录后才能访问,一般如果我们不用爬虫框架的前提下,常规用的就两个库 ,urllib库和requests库,本文将用最基础的urllib库,以 ...

  8. curl php 百度,php curl 模拟登录百度主页

    php curl 模拟登录百度首页 本帖最后由 STONEWP 于 2012-03-29 13:43:04 编辑 代码如下: $url = "https://passport.baidu.c ...

  9. discuz admin.php无法登录,忘记管理员密码无法登录Discuz后台管理员的解决方法汇总...

    Discuz管理员无法登陆后台的情况有多种下面会对这些问题提供一些解决方法:也会有可以登陆前台却无法登陆后台的一系列解决办法,下面是无忧主机小编总结的其中方法,希望对大家有所帮助. 1.管理员用户组变 ...

最新文章

  1. centOS上docker 的简单使用
  2. php ip访问mysql什么配置_PHP与MYSQL配合完成IP的存取
  3. Servlet3.0新特性WebFilter(Annotation Filter)详解
  4. php arcode svg,在react中使用svg的各种方法总结(附代码)
  5. Cloud for Customer里UI5 JavaScript代码和UI designer里模型的对应关系
  6. 如何开发高度可定制的产品
  7. 2021年基金什么时候布局?
  8. Python编程案例:中文金额转换并计算
  9. FFmpeg命令(七)、 音频与视频合并成视频
  10. python项目 from models import * 报错
  11. 厨师 做菜 java_经验丰富的厨师有哪些日常做饭技巧?
  12. python凤凰新闻数据分析(四)整合
  13. HCM 初学 ( 二 ) - 信息类型
  14. 如何实现css垂直居中
  15. 网络组建与维护(第2版)笔记
  16. maven打包配置详解
  17. 谷歌app使用的是什么字体_Google字体无法在中国使用-如何修复
  18. python怎么粘贴字进去_通过python粘贴到输入字段上
  19. 一种神经传导物质——多巴胺
  20. 塔米狗知识|增资扩股和股权转让的本质区别介绍

热门文章

  1. H3C 交换机配置命令详解
  2. 使用ova镜像进行edx平台的部署、配置过程
  3. C++数组——冰雹猜想
  4. 中兴路由器 ZXR10 6800启用pptp支持
  5. 高等数学:第九章 重积分(2)三重积分的概念、应用,利用柱面坐标和球面坐标计算三重积分
  6. 艾永亮:打造超级产品,企业要弄明白的5件事
  7. 计算机导论-计算机,计算及计算思维
  8. 牛逼!这个 Python 时间格式转换工具太优秀了!
  9. SQL与Oracle对比
  10. iBeacon+WiFi定位技术解决室内定位一切问题,低成本+高精准室内定位