java 模拟登陆人人网_一个模拟登陆的小工具(抓取人人网状态的例子)

一个模拟登陆的小工具(抓取人人网状态的例子)

最近突然想抓取一个的所发的状态作了一个分析,然后就写了这么一个小工具,很简单,我就不写那么多了(其实就是最近变懒了)直接贴代码讲解吧...

下面这个是非常简单的的小工具,只适合抓取特定的一点数据,当然先前得去分析一下网站的,我只是想获取特定的一个人的数据,如果想获取更多的数据的等方面自己可以再写个大的项目,挂到GitHub上然后咱们可以一起玩于。

还有推荐大家一个专门抓取数据网站 http://demo.pyspider.org/ 这是一个用Python写的抓取工具,GitHub上有开源代码,可以自己搭建服务器去玩。

class postRegister{

protected $pdo;

function __construct()

{

$this->pdo = new PDO("mysql:host={数据库地址};dbname={数据库名}","{用户名}","{密码}");

}

public function getPage()

{

set_time_limit(0);

$login_url = 'http://www.renren.com/ajaxLogin/login?1=1&uniqueTimestamp=2015441738547';

$post_fields = [

'email' => '{你的人人邮箱}',

'icode' => '',

'origURL' => 'http://www.renren.com/home',

'domain' => 'renren.com',

'key_id' => 1,

'captcha_type' => 'web_login',

'password' => '{加密过后的密码,具体获得的方法我下面有写}',

'rkey' => '{随机字符串,下面有写}',

'f' => ''

];

/** cookie文件存放在网站根目录的temp文件夹下 */

$cookie_file = tempnam('./temp','cookie');

$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);

$result = curl_exec($ch);

curl_close($ch);

/** result应该会返回一个json字符串,code应该返回的是true,如果是false的话应该会有返回其他东西,具体的我忘记了你可看看 */

/** 因为我知道它有多少页的数据... */

for( $i = 0; $i < 12; $i++ )

{

/** 带上cookie文件,你需要抓取数据的地址 */

$send_url='http://status.renren.com/GetSomeomeDoingList.do?userId={它的用户ID}&curpage='.$i.'&_jcb=jQuery1111009250002168118954_1432215454747&requestToken=-1418373141&_rtk=77365645&_=1432215454753';

$ch = curl_init($send_url);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);

$contents = curl_exec($ch);

curl_close($ch);

$contents = base64_encode($contents);

// echo "INSERT INTO renren(`data`) values('{$contents}')";die;

/** 抓会来回先存吧,等以后有时间再慢慢处理所以就直接base_64处理了一下,先把数据保存起来 */

if($this -> pdo -> exec("INSERT INTO gaofei(`data`) values('{$contents}')")){

echo "插入成功!第{{$i}}页数据...";

echo $this -> pdo -> lastinsertid()."\n";

}

/** 这里为什么要休息5秒呢?因为我怕人人把我IP封掉... */

sleep(5);

}

}

public function getDBdata()

{

$rs = $this -> pdo -> query("select * from renren");

$rs->setFetchMode(PDO::FETCH_ASSOC);

while($row = $rs -> fetchAll()){

foreach ($row as $key => $value) {

$data = base64_decode( $value['data']);

$data = substr($data, 43, strlen($data) -44); //因为它是跨区请求的....

print_r( json_decode($data));

}

}

}

}

$postRegister = new postRegister();

$postRegister->getPage();

上面留的Flag 怎么获取你登陆人人网时传入的数据...

用 Chrome 或 FireFox 浏览器打开fireBug

把 preserver log 和 disable cache 勾上(我用的是chrome浏览器)

输入你的用户名和密码

然后点“登陆” 然后它有个登陆地址...

找到如图的地址:

c26780c54d27578cd9aba10f27422809.png

这下面就是你传的数据了...

8608b4daf43e58aa3a5ac9b35f6ede20.png

方法上面都写了,还不清楚的下而留言,我一定会慢慢回复解答的...谢谢大家的观赏...

The end!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值