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 相关文章推荐
一个简单的自动发送邮件系统(二)
Oct 09 PHP
PHP实现图片简单上传
Oct 09 PHP
mysql limit查询优化分析
Nov 12 PHP
完美实现GIF动画缩略图的php代码
Jan 02 PHP
php Smarty 字符比较代码
Feb 27 PHP
thinkphp常见路径用法分析
Dec 02 PHP
Yii中创建自己的Widget实例
Jan 05 PHP
php array_pop 删除数组最后一个元素实例
Nov 02 PHP
PHP 序列化和反序列化函数实例详解
Jul 18 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 PHP
php 利用socket发送GET,POST请求的实例代码
Jul 04 PHP
深入理解PHP+Mysql分布式事务与解决方案
Dec 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
锁定年轻人的双倍活力 星巴克推出星倍醇即饮浓咖啡
2021/03/03 咖啡文化
php 删除记录同时删除图片文件的实现代码
2010/05/12 PHP
php中青蛙跳台阶的问题解决方法
2018/10/14 PHP
use jscript List Installed Software
2007/06/11 Javascript
FileUpload 控件 禁止手动输入或粘贴的实现代码
2010/04/07 Javascript
非主流的textarea自增长实现js代码
2011/12/20 Javascript
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
2013/05/24 Javascript
jQuery结合CSS制作动态的下拉菜单
2015/10/27 Javascript
JavaScript从0开始构思表情插件
2016/07/26 Javascript
Bootstrap表单简单实现代码
2017/03/06 Javascript
微信小程序HTTP接口请求封装的实现
2019/02/21 Javascript
vue实现侧边栏导航效果
2019/10/21 Javascript
[03:41]2018完美盛典-《Fight With Us》
2018/12/16 DOTA
[00:29]2019完美世界全国高校联赛(秋季赛)总决赛海口落幕
2019/12/10 DOTA
浅析PyTorch中nn.Linear的使用
2019/08/18 Python
简单了解python中的f.b.u.r函数
2019/11/02 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
2020/09/17 Python
python实现将字符串中的数字提取出来然后求和
2020/04/02 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
2020/04/24 Python
python3.8.1+selenium实现登录滑块验证功能
2020/05/22 Python
CSS3 简单又实用的5个属性
2010/03/04 HTML / CSS
移动Web—CSS为Retina屏幕替换更高质量的图片
2012/12/24 HTML / CSS
CSS3实现自定义Checkbox特效实例代码
2017/04/24 HTML / CSS
amazeui时间组件的实现示例
2020/08/18 HTML / CSS
Python面试题集
2012/03/08 面试题
工艺工程师工作职责
2013/11/23 职场文书
医学专业毕业生求职信
2014/06/20 职场文书
企业法人代表授权委托书
2014/10/02 职场文书
2016年党校科级干部培训班学习心得体会
2016/01/06 职场文书
大学生干部培训心得体会
2016/01/06 职场文书
严以用权学习心得体会
2016/01/12 职场文书
导游词之西递宏村
2019/12/10 职场文书
MySQL 亿级数据导入导出及迁移笔记
2021/06/18 MySQL
vscode内网访问服务器的方法
2022/06/28 Servers
Win10玩csgo闪退如何解决?Win10玩csgo闪退的解决方法
2022/07/23 数码科技
JS前端canvas交互实现拖拽旋转及缩放示例
2022/08/05 Javascript