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 相关文章推荐
eWebEditor v3.8 商业完整版 (PHP)
Dec 06 PHP
PHP中计算字符串相似度的函数代码
Dec 29 PHP
PHP JS Ip地址及域名格式检测代码
Sep 27 PHP
用PHP代替JS玩转DOM的思路及示例代码
Jun 15 PHP
PHP反射机制用法实例
Aug 28 PHP
php实现求相对时间函数
Jun 15 PHP
php导出生成word的方法
Dec 25 PHP
详细解读php的命名空间(二)
Feb 21 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
Jul 30 PHP
php+croppic.js实现剪切上传图片功能
Aug 14 PHP
Laravel框架实现定时Task Scheduling例子
Oct 22 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
Nov 23 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
用PHP+MySql编写聊天室
2006/10/09 PHP
一个改进的UBB类
2006/10/09 PHP
php读取数据库信息的几种方法
2008/05/24 PHP
Joomla下利用configuration.php存储简单数据
2010/05/19 PHP
php用正则判断是否为数字的方法
2016/03/25 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
PHP实现获取第一个中文首字母并进行排序的方法
2017/05/09 PHP
php tpl模板引擎定义与使用示例
2019/08/09 PHP
Javascript - HTML的request类
2007/01/09 Javascript
javascript arguments 传递给函数的隐含参数
2009/08/21 Javascript
JS操作Cookie写入和读取实例代码
2013/10/20 Javascript
jquery easyui 对于开始时间小于结束时间的判断示例
2014/03/22 Javascript
JavaScript实现Iterator模式实例分析
2015/06/09 Javascript
jquery原理以及学习技巧介绍
2015/11/11 Javascript
javascript的replace方法结合正则使用实例总结
2016/06/16 Javascript
BootStrap的双日历时间控件使用
2017/07/25 Javascript
vue 属性拦截实现双向绑定的实例代码
2018/10/24 Javascript
JS创建自定义对象的六种方法总结
2020/12/15 Javascript
[00:52]黑暗之门更新 新英雄孽主驾临DOTA2
2016/08/24 DOTA
[55:03]LGD vs EG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
详细探究Python中的字典容器
2015/04/14 Python
python中requests小技巧
2017/05/10 Python
Python实现的生成格雷码功能示例
2018/01/24 Python
将Python文件打包成.EXE可执行文件的方法
2019/08/11 Python
如何向接受结构参数的函数传入常数值
2016/02/17 面试题
三八妇女节活动主持词
2014/03/17 职场文书
学雷锋先进个人事迹
2014/05/26 职场文书
消防工作实施方案
2014/06/09 职场文书
调研汇报材料范文
2014/08/17 职场文书
学习十八大的心得体会
2014/09/01 职场文书
公司仓管员岗位职责
2015/04/01 职场文书
婚礼双方父亲致辞
2015/07/27 职场文书
JS中一些高效的魔法运算符总结
2021/05/06 Javascript
Python机器学习算法之决策树算法的实现与优缺点
2021/05/13 Python
2022年显卡天梯图(6月更新)
2022/06/17 数码科技
Li list-style-image 图片垂直居中实现方法
2023/05/21 HTML / CSS