PHP curl模仿用户登陆新浪微博发微博例子

前天接到一个需求需要模拟登陆微博然后进行发微博,以前干过很多的模拟登录阿里妈妈,微信,还有些其他的内部系统,至今没有出现不能登录的,哈哈,所以也就没有当一回事情,可是当分析新浪的登陆过程的时候才感觉到压力,?澹?苈氲募用芊绞礁悴欢ò。??虾芏嗟亩际侵?暗募用芩惴 sha1(sha1(sha1(pwd)).once.servertime) ,肯定都用不了,主要使这个加密算法搞不定所以密码都搞不定别谈登录的,接着就在网上各种找代码,一个小时毫无所获,?辶耍?獯胃迷趺窗炷兀?氨吲6即党鋈チ恕M蝗幌氲降锹嫉氖焙蛴幸桓龃?so,是不是我用微博的帐号密码也能登录到新浪邮箱或者其他新浪产品去,感觉希望很大,哈哈,果然微博的帐号可以直接登录所有的新浪产品,再次访问微博我已经在登录状态了,证明这个有神马用呢?

其实吧很有用的,一个大公司在一个项目投入的技术和这个项目盈利和前景有很大关系,微博他可以花很大的心思去做,但是其他不一定就,哈哈,万一找到那个地方的密码没有加密那岂不是很好说了。(PS:对网络安全比较感兴趣,这个方式对黑客来说叫做旁注,旁注就是,当黑客在攻击一个网站的时候,这个网站安全做的非常好,没有什么已知漏洞,攻破难度较大,所以黑客会找找该网站下服务器下其他网站,然后找一个比较容易攻破的,通过这个网站挂马,shell,提权,然后目标网站也就沦陷,以为在同一个服务器,所以….目标就是拿到目标站,无论哪种方法只要拿下就行,很淫荡的想法有没有)

https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)&_=1403138799543简单抓抓包发现密码并没有加密,哈哈,我们不是能模拟登录了吗? 嗯,其实这里高兴的有点早了

先登录新浪的吧,代码分分钟就搞定了。返回的是一个json数组

 代码如下 复制代码

$password = $p;
$username = base64_encode($u);
$loginUrl = 'https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)&_=1403138799543';
$loginData['entry'] = 'sso';
$loginData['gateway'] = '1';
$loginData['from'] = 'null';
$loginData['savestate'] = '30';
$loginData['useticket'] = '0';
$loginData['pagerefer'] = '';
$loginData['vsnf'] = '1';
$loginData['su'] = base64_encode($u);
$loginData['service'] = 'sso';
$loginData['sp'] = $password;
$loginData['sr'] = '1920*1080';
$loginData['encoding'] = 'UTF-8';
$loginData['cdult'] = '3';
$loginData['domain'] = 'sina.com.cn';
$loginData['prelt'] = '0';
$loginData['returntype'] = 'TEXT';

//var_dump($loginData);exit;

$login = json_decode(loginPost($loginUrl,$loginData),true);
var_dump($login);exit;function loginPost($url,$data){
global $cookie_file ;
//echo $cookie_file ;exit;
$tmp = '';
if(is_array($data)){
foreach($data as $key =>$value){
$tmp .= $key."=".$value."&";
}
$post = trim($tmp,"&");
}else{
$post = $data;
}
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post);
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
$return = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
return $return;

 }返回的是一个json数据转成数组即可

 代码如下 复制代码

 

array (size=4)
  'retcode' => string '0' (length=1)
  'uid' => string '1920109964' (length=10)
  'nick' => string '毕姥爷讲故事' (length=18)
  'crossDomainUrlList' =>
    array (size=2)
      0 => string 'https://passport.weibo.com/wbsso/login?ticket=ST-MTkyMDEwOTk2NA%3D%3D-1403228192-gz-AB37DC0C18BA3BFCD90AEFAC6115149D&ssosavestate=1434764192' (length=140)
      1 => string 'https://crosdom.weicaifu.com/sso/crosdom?action=login&savestate=1434764192' (length=74)

这个时候说明我们登录成功了,但是其实我们的微博首页的地址并不是weibo,com,而是 http://weibo.com/bipeng0405/home?wvr=5 这样地址,我们怎么获取这个地址了,很简单,直接抓取weibo。com然后他会自动给你跳转回去的,你只需要把跳转的地址记录下来即可

 代码如下 复制代码

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,"http://weibo.com"); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch,CURLOPT_COOKIEFILE, $cookie_file); 
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file); 

$return = curl_exec($ch);

$info = curl_getinfo($ch);

curl_close($ch);这里还有一个问题,这个时候你可能发现没有跳转到自己微博的首页,这是什么原因呢,可以看看登陆时候有两个连接地址,其中有一个weibo域下的一个地址,猜测应该是进行了cookie的设置所以先获取一边他吧。

 代码如下 复制代码

get($login['crossDomainUrlList'][0]);

这个代码要在刚才weibo.com获取之前,否则会出现问题的哦

这就是登录的逻辑了,过程很漫长花了差不多一天的时候,唉。。没有心情写文章了

原文来自:http://www.mapenggang.com

 

时间: 2025-01-21 04:30:27

PHP curl模仿用户登陆新浪微博发微博例子的相关文章

PHP采用curl模仿用户登陆新浪微博发微博的方法_php技巧

本文实例讲述了PHP采用curl模仿用户登陆新浪微博发微博的方法.分享给大家供大家参考.具体实现方法如下: 现在用php做模仿用户登录我们都会使用到PHP curl函数了,因为只有它才可以实现像用户一样的去访问别人网站了,下面就给大家介绍一下curl登陆新浪微博发微博应用例子. 前天接到一个需求需要模拟登陆微博然后进行发微博,以前干过很多的模拟登录阿里妈妈,微信,还有些其他的内部系统,至今没有出现不能登录的,哈哈,所以也就没有当一回事情,可是当分析新浪的登陆过程的时候才感觉到压力 遇到sha1(

PHP采用curl模仿用户登陆新浪微博发微博的方法

 现在用php做模仿用户登录我们都会使用到PHP curl函数了,因为只有它才可以实现像用户一样的去访问别人网站了,下面就给大家介绍一下curl登陆新浪微博发微博应用例子. 前天接到一个需求需要模拟登陆微博然后进行发微博,以前干过很多的模拟登录阿里妈妈,微信,还有些其他的内部系统,至今没有出现不能登录的,哈哈,所以也就没有当一回事情,可是当分析新浪的登陆过程的时候才感觉到压力 遇到sha1(sha1(sha1(pwd)).once.servertime) ,肯定都用不了,主要使这个加密算法搞不定

java-设计这样一个平台,让用户发帖、发微博、转账等不必再到相关页面操作,直接在首页调用流程的周期有多长?

问题描述 设计这样一个平台,让用户发帖.发微博.转账等不必再到相关页面操作,直接在首页调用流程的周期有多长? 首页不是导航而是一个个具有特殊功能的流程,如发微博,发帖子,转账,充话费,购物等流程,不需要用户到微博,帖子,知道,电子商城和博客等页面来完成这些操作,而是直接在首页调用相关流程以无接触的方式的完成这些相应操作 而流程应当是由用户与系统会话的形式编制而成的,并不需要专业知识,只是正常的操作. 比如在数据框中输入 "今天心情很好",点击发微博方块(注意,是点击方块中的文字&quo

新浪微博发微博如何能@ 别人?

  假如您想让朋友看到您的消息,您可以在发微博的时候用@+朋友的微博昵称,在输入框输入@ 后,会出现的您最近联系人,可点击选择;这样朋友在登录微博的时候就会收到提示看您的消息了.此外在微博评论中也可以支持@ 提醒. 温馨提示:您可以对关注对象设置备注,@ 对方时可使用备注名称;@+昵称之后,请在昵称后敲下空格,就完成@操作了.

新浪微博发微博总有垃圾用户评论我怎么办?

  遇到此种情况建议您: 1.在帐号-帐号设置-隐私设置中将"评论"设置为可信用户或我关注的人可以进行操作; 2.将鼠标移至内容为垃圾信息的评论上,右下方会显示举报字样,点击即可或进入该用户微博页面,点击页面的"举报TA"按钮

php下使用curl模拟用户登陆的代码_php技巧

bool curl_setopt (int ch, string option, mixed value) curl_setopt()函数将为一个CURL会话设置选项.option参数是你想要的设置,value是这个选项给定的值. 下列选项的值将被作为长整形使用(在option参数中指定): *CURLOPT_INFILESIZE: 当你上传一个文件到远程站点,这个选项告诉PHP你上传文件的大小. *CURLOPT_VERBOSE: 如果你想CURL报告每一件意外的事情,设置这个选项为一个非零值

php 模仿用户登陆读取DZ 论坛验码程序-2

set_time_limit(0); session_start(); require("config.php"); if($_SERVER["REQUEST_METHOD"]=="POST") {  $cookie_jar2=tempnam("temp","C3");  $cookie_jar3=tempnam("temp","C4");  $array=array

php 利用curl模仿用户采集远程网站内容

 代码如下 复制代码 $timestamp = time(); function open($file,$type=''){         global $fromurl,$referer;         $cachename=$file;                 if($type){                         $file='/'.$type.'/'.$file;                 }else{                         $f

php 模仿用户登陆读取DZ 论坛验码程序-3

error_reporting(0); session_start(); header("Content-Type:text/html;charset=utf-8"); require("config.php"); $_SESSION["cookie_jar1"]=tempnam("temp","C2"); $url=DZ."ajax.php?inajax=1&action=checkse