php采用curl模仿登录人人网发布动态的方法


Posted in PHP onNovember 07, 2014

本文实例讲述了php采用curl模仿登录人人网发布动态的方法。分享给大家供大家参考。具体实现方法如下:

说到php中模仿登录很多人第一时间会想到curl函数系列了,这个没错本例子也是使用curl模仿登录之后再进行动态发布,原理也简单我们只要抓取人人网的登录信息,然后再由curl post登录数据上去就可以了。

具体代码如下:

$rconfig = pdo_fetch("SELECT * FROM ".tablename("eduTwo_renren")." WHERE weid = :weid",array(':weid'=>$_W['weid']));
$cookie_file = dirname(__FILE__)."/renren.cookie";

$login_url = 'http://passport.renren.com/PLogin.do';

$post_fields['email'] = $rconfig['rusername'];

$post_fields['password'] = $rconfig['rpassword'];

$post_fields['origURL'] = 'http%3A%2F%2Fhome.renren.com%2FHome.do';

$post_fields['domain'] = 'renren.com';
$ch = curl_init($login_url);

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5');

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_MAXREDIRS, 1);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

curl_setopt($ch, CURLOPT_AUTOREFERER, 1);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);

curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);

$content = curl_exec($ch);

$info = curl_getinfo($ch);

curl_close($ch);

//var_dump($info);exit;

//匹配用户的ID

$send_url='http://www.renren.com/home';

$ch = curl_init($send_url);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);

curl_exec($ch);

$info = curl_getinfo($ch);

curl_close($ch);
//$uid = "305115027";

//获取token和rtk

$send_url=$info['redirect_url'];

$ch = curl_init($send_url);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);

$tmp = curl_exec($ch);

curl_close($ch);

preg_match_all("/get_check:'(.*?)',get_check_x:'(.*?)',/is",$tmp,$arr);

preg_match_all("/'ruid':'(.*?)',/is",$tmp,$utmp);

//var_dump($utmp);exit;

$token = $arr[1][0];//1121558104

$rtk = $arr[2][0];//e9a9cb2

$uid = $utmp[1][0];

//echo $token;exit;

//发布信息

$poststr['content'] = $_GPC['content'].$rconfig['tail'];

$poststr['withInfo'] = '{"wpath":[]}';

$poststr['hostid:'] = $uid;

$poststr['privacyParams'] = '{"sourceControl": 99}';

$poststr['requestToken'] = $token;

$poststr['_rtk'] = $rtk;

$poststr['channel'] = "renren";

$head = array(

 'Referer:http://shell.renren.com/ajaxproxy.htm',

 'X-Requested-With:XMLHttpRequest',

);

$ch = curl_init("http://shell.renren.com/{$uid}/status");

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5');

curl_setopt($ch,CURLOPT_HTTPHEADER,$head);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_MAXREDIRS, 1);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

curl_setopt($ch, CURLOPT_AUTOREFERER, 1);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $poststr);

curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);

$content = curl_exec($ch);

curl_close($ch);

//echo $content;exit;

$data = json_decode($content,true);

if($data["code"] == "0"){

 echo "发布成功!";

}else{

 echo "shit !!!";

}

最后就发布成功了,当然前面的数据库需要自己写一个吧,非常的简单的一个记录库也是你要发布的信息。录数据上去就可以了。

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
配置PHP使之能同时支持GIF和JPEG
Oct 09 PHP
一个简单的PHP&MYSQL留言板源码
Jul 19 PHP
php array_slice函数的使用以及参数详解
Aug 30 PHP
无JS,完全php面向过程数据分页实现代码
Aug 27 PHP
浅析echo(),print(),print_r(),return之间的区别
Nov 27 PHP
php的ddos攻击解决方法
Jan 08 PHP
PHP合并数组+号和array_merge的区别
Jun 25 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
如何优雅的使用 laravel 的 validator验证方法
Nov 11 PHP
PHP反射原理与用法深入分析
Sep 28 PHP
基于php解决json_encode中文UNICODE转码问题
Nov 10 PHP
PHP的imageTtfText()函数深入详解
Mar 03 PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
Nov 07 #PHP
php的curl封装类用法实例
Nov 07 #PHP
PHP使用ob_start生成html页面的方法
Nov 07 #PHP
PHP实现HTML生成PDF文件的方法
Nov 07 #PHP
PHP面向对象精要总结
Nov 07 #PHP
PHP使用feof()函数读文件的方法
Nov 07 #PHP
php几个预定义变量$_SERVER用法小结
Nov 07 #PHP
You might like
BBS(php & mysql)完整版(二)
2006/10/09 PHP
php小偷相关截取函数备忘
2010/11/28 PHP
百度站点地图(百度sitemap)生成方法分享
2014/01/09 PHP
thinkphp中memcache的用法实例
2014/11/29 PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
2014/12/25 PHP
64位windows系统下安装Memcache缓存
2015/12/06 PHP
Laravel框架实现redis集群的方法分析
2017/09/14 PHP
新手入门常用代码集锦
2007/01/11 Javascript
jQuery 1.3 和 Validation 验证插件1.5.1
2009/07/09 Javascript
同时使用n个window onload加载实例介绍
2013/04/25 Javascript
JS localStorage实现本地缓存的方法
2013/06/22 Javascript
通过url查找a元素应用案例
2014/04/29 Javascript
详谈JavaScript内存泄漏
2014/11/14 Javascript
Eclipse编辑jsp、js文件时卡死现象的解决办法汇总
2016/02/02 Javascript
javascript基本数据类型及类型检测常用方法小结
2016/12/14 Javascript
discuz表情的JS提取方法分析
2017/03/22 Javascript
js canvas实现QQ拨打电话特效
2017/05/10 Javascript
vue主动刷新页面及列表数据删除后的刷新实例
2018/09/16 Javascript
JS实现的雪花飘落特效示例
2019/12/03 Javascript
js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期
2020/02/01 Javascript
javascript中正则表达式语法详解
2020/08/07 Javascript
在vue项目中 实现定义全局变量 全局函数操作
2020/10/26 Javascript
Python选择排序、冒泡排序、合并排序代码实例
2015/04/10 Python
使用Python编写基于DHT协议的BT资源爬虫
2016/03/19 Python
详解多线程Django程序耗尽数据库连接的问题
2018/10/08 Python
Python获取航线信息并且制作成图的讲解
2019/01/03 Python
NumPy中的维度Axis详解
2019/11/26 Python
Python自省及反射原理实例详解
2020/07/06 Python
python3代码中实现加法重载的实例
2020/12/03 Python
纯CSS3代码实现文字描边
2016/04/25 HTML / CSS
Brasty罗马尼亚:购买手表、香水、化妆品、珠宝
2020/04/21 全球购物
小学教师个人先进事迹材料
2014/05/17 职场文书
安全生产先进个人事迹材料
2014/12/30 职场文书
庐山导游词
2015/02/03 职场文书
2015年办公室主任工作总结
2015/04/09 职场文书
创业计划书之服装
2019/10/07 职场文书