C# 新浪微博模拟登录

【1】背景介绍
新浪微博之前模拟登录的密码加密方式是用SHA1的加密方式,近期做了密码加密方式的修改,
采用Rsa1密码加密方式。
【2】模拟登录的流程介绍
(1)首先登录的用户名必须要做一些处理,【nd@163.com】的【@】必须替换成【%40】,否则模拟登录加密方式是出错
(2)对(1)处理过的用户名进行Base64编码处理
(3)获取登录需要的参数,其中 su为(2)步骤中处理过的username
http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=userName&rsakt=mod&checkpin=1&client=ssologin.js(v1.4.11)&_=1381666973790

(4)通过步骤(3)可以得到下面的json串,其中retcode=0,表示获取成功,解析出其中的servertime、nonce、pubkey、rsakv四个参数.
"sinaSSOController.preloginCallBack({\"retcode\":0,\"servertime\":1381650591,\"pcid\":\"xd-9de19783c86f8bae0cec1039155e478ebeb7\",\"nonce\":\"H3NZLR\",\"pubkey\":\"EB2A38568661887FA180BDDB5CABD5F21C7BFD59C090CB2D245A87AC253062882729293E5506350508E7F9AA3BB77F4333231490F915F6D63C55FE2F08A49B353F444AD3993CACC02DB784ABBB8E42A9B1BBFFFB38BE18D78E87A0E41B9B8F73A928EE0CCEE1F6739884B9777E4FE9E88A1BBE495927AC4A799B3181D6442443\",\"rsakv\":\"1330428213\",\"exectime\":1})"
(5)获取新浪脚本的加密密码,
   通过.net直接执行新浪js的加密方式获取加密后的密码
   using Roslyn.Scripting;
   using Roslyn.Scripting.CSharp;
   加载本地的js文件【详细js见附件】
   ScriptEngine se = new ScriptEngine(ScriptLanguage.JavaScript); 
   object obj = se.Run("getpass", new object[] { pwd, servicetime, nonce, pubkey }, js); 
   return obj.ToString(); 
   
(6)根据(5)得到的参数sp,和servertime、nonce、pubkey、rsakv,su等参数 通过【post】请求登录地址
http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.11)
  
(7)返回结果中,如果retcode=0即,表示登录成功,101表示登录失败,成功后就可以把cookie记录下来,
     可以访问新浪微博其他需要登录状态下访问的数据
<html>
<head>
<title>新浪通行证</title>
<meta http-equiv="refresh" content="0; url=&#39;http://weibo.com/sso/login.php?url=http%3A%2F%2Fweibo.com%2Fajaxlogin.php%3Fframelogin%3D1%26callback%3Dparent.sinaSSOController.feedBackUrlCallBack%26sudaref%3Dweibo.com&ticket=ST-MzQ5NTgyOTgwMQ==-1381665939-xd-06D3C001B849033EB4FE7B8715E8FA65&retcode=0&#39;"/>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
</head>
<body bgcolor="#ffffff" text="#000000" link="#0000cc" vlink="#551a8b" alink="#ff0000">
<script type="text/javascript" language="javascript">
location.replace("http://weibo.com/sso/login.php?url=http%3A%2F%2Fweibo.com%2Fajaxlogin.php%3Fframelogin%3D1%26callback%3Dparent.sinaSSOController.feedBackUrlCallBack%26sudaref%3Dweibo.com&ticket=ST-MzQ5NTgyOTgwMQ==-1381665939-xd-06D3C001B849033EB4FE7B8715E8FA65&retcode=0");
</script>
</body>
</html>
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值