最新评论
我也同 1楼一样,一访问主页就出问题,
http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack&ssosavestate=1324433453&ticket=ST-MTY1MjMwNDI2MQ==-1323828653-gz-F64B7E0ADEAF1C0208099109A2CBA6B6&retcode=0
这个链接也已经访问过了,但是请求个人主页就是不行,自动跳转到登录页了
返回的信息
<html><head><script language='javascript'>parent.sinaSSOController.feedBackUrlCallBack({"result":true,"userinfo":{"uniqueid":"1898793457","userid":"xxxxxx.cn","displayname":"\u45c4\u8d22","userdomain":"xxxxx?wvr=4"}});</script></head><body></body></html>null
求助楼主。我用python之前按照你提的方法成功了,可是不知道为什么从今天开始又无法登陆。传递了以下参数:
params={'client':'ssologin.js(v1.3.17)',
'entry':'weibo',
'gateway':1,
'from':'',
'savestate':7,
'useticket':1,
'ssosimplelogin':1,
'vsnf':1,
'vsnval':'',
'su':quote(b64encode(quote(email))),
'service':'miniblog',
'servertime':servertime,
'nonce':nonce,
'pwencode':'wsse',
'door':door,
'pcid':pcid,
'sp':sha.new(sha.new(sha.new(pwd).hexdigest()).hexdigest()+servertime+nonce).hexdigest(),
'encoding':'UTF-8',
'url':quote('http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack'),
'returntype':'META'
}
但返回的location.replace里面只有("http://login.sina.com.cn/")。不知道是哪里弄错了。。。
你需要再请求 http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack&ssosavestate=1324433453&ticket=ST-MTY1MjMwNDI2MQ==-1323828653-gz-F64B7E0ADEAF1C0208099109A2CBA6B6&retcode=0 这地址,然后返回的cookies整理一下,与他提交的一样就可以了。
我是用php的curl做的,成功返回参数
<html> <head> <title>Sina Member</title> <meta http-equiv="Content-Type" content="text/html; charset=GBK" /> <script charset="utf-8" src="http://i.sso.sina.com.cn/js/ssologin.js"></script> </head> <body> Signing in ... <script> try{sinaSSOController.setCrossDomainUrlList({"retcode":0,"arrURL":["http:\/\/kandian.com\/logon\/do_crossdomain.php?action=login&savestate=1324433453","http:\/\/login.t.cn\/sinaurl\/sso.json?action=login&uid=1652304261"]});}catch(e){}try{sinaSSOController.crossDomainAction('login',function(){location.replace('http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack&ssosavestate=1324433453&ticket=ST-MTY1MjMwNDI2MQ==-1323828653-gz-F64B7E0ADEAF1C0208099109A2CBA6B6&retcode=0');});}catch(e){} </script> </body> </html>
但请求自己或者别人的主页,都是没有登录的状态,求解
<html><head><script language='javascript'>parent.sinaSSOController.feedBackUrlCallBack({"result":true,"userinfo":{"uniqueid":"1898793457","userid":"xxxxxx.cn","displayname":"\u45c4\u8d22","userdomain":"xxxxx?wvr=4"}});</script></head><body></body></html>null
成功返回了,但是再请求http://weibo.com/,就到登录界面了,
求高手帮帮忙
按照楼主的方法,返回了成功
parent.sinaSSOController.feedBackUrlCallBack({"result":true,.................
但是请求http://weibo.com/ 时又跳回了登录界面,求解决
问题已经解决,HttpClient模拟登录成功后,才发现新浪为了解决跨域登录验证问题,的确用了很好的方法,要想模拟登录成功,需要链接5次,
第一步get url=http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su="+你通过BASE64加密的用户名+"&client=ssologin.js(v1.3.16)
第二步sha1加密两遍密码后加上上一步返回的servertime和nonce,再用sha1加密一遍。post 这个地址http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.16),取cookie和返回值
第三步 get http://kandian.com/logon/do_crossdomain.php?action=login&savestate="+G_cookies.get("savestate")+"&callback=sinaSSOController.doCrossDomainCallBack&scriptId=ssoscript0&client=ssologin.js(v1.3.16)
这一步你可以不取值,但最好GET一下
第四步 get
http://login.t.cn/sinaurl/sso.json?action=login&uid="+G_cookies.get("uid")+"&callback=sinaSSOController.doCrossDomainCallBack&scriptId=ssoscript1&client=ssologin.js(v1.3.16)
这一步也可以不取值,但还是GET一下
第五步 get
http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack&ssosavestate="+G_cookies.get("ssosavestate")+"&ticket="+G_cookies.get("ticket")
取COOKIE和返回值
所有SOOKIE和返回值基本取完
可以访问http://weibo.com/"+G_cookies.get("userdomain")了。
登录最主要的几个值
ALF
NSC_wjq_xfjcp.dpn_ipnfqbhf
SSOLoginState //这个非常重要
SUE
SUP //这三个值基本可跳转其他页面
un //你的用户ID,取不取,你都知道
wvr //版本号
get 后再取SOOKIE
U_TRS1
U_TRS2
NSC_wjq_xfjcp.dpn_w3.6_w4
这三个值不知道是干什么的,不过其他页面有时会刷新COOKIE
还有几个值估计是JS算出来的
Apache
NSC_wjq_wpuf.u.tjob.dpn.do
SINAGLOBAL
ULV
既然放出来自然有用,在查JS
HttpClient既然能登录
JSOUP也能,方便多了
完全不知你们在说什么呢。不懂技术的如何能取得真正 的cookies?请详细说一下吧,很需要呢,谢谢
我用的方法跟你差不多,但已经验证通过,就是无法跳转。用了你的方法,也一样。都跳转到新浪会员那里了。
输出severtime: (1319228867)
输出nonce: (HI68TW)
输出encodedPassword: (175ca01f43f53389606982649a1efcb2180ec984)
retcode: 0
replace: (http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack&ssosavestate=1319833673&ticket=ST-MTQwMzcwNTA0Mg==-1319228873-xd-A5CF54BD24A3178BAC13F1FB066BEF48&retcode=0)
共3个cookie
getcookie: (SSOLoginState=1319228873,SUP=cv%3D1%26bt%3D1319228873%26et%3D1319315273%26lt%3D1%26uid%3D1403705042%26user%3D这里是我的用户名%26ag%3D2%26name%3D用户名%2540sina.com%26nick%3D用户名%26sex%3D1%26ps%3D0%26email%3D用户名%2540sina.com%26dob%3D1973-09-27%26ln%3D1403705042%26os%3D%26fmp%3D%26lcp%3D%26us%3D,U_TRS2=000000c9.ef7c57bd.4ea1d5c9.613661a2,)
SSOLoginState: (1319228873)
SSOLoginState: (<html>
<head>
<title>新浪会员</title>
<meta http-equiv="refresh" content="0; url='http://weibo.com/?retcode=6102'" />
<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/?retcode=6102");
</script>
</body>
</html>)
C# 的是:
/// <summary>
/// use sha1 to encrypt string
/// </summary>
public string SHA1_Encrypt(string Source_String)
{
byte[] StrRes = Encoding.Default.GetBytes(Source_String);
HashAlgorithm iSHA = new SHA1CryptoServiceProvider();
StrRes = iSHA.ComputeHash(StrRes);
StringBuilder EnText = new StringBuilder();
foreach (byte iByte in StrRes)
{
EnText.AppendFormat("{0:x2}", iByte);
}
return EnText.ToString();
}
用户名是:
string username = this.tbUsername.Text;
byte[] bytes = Encoding.Default.GetBytes(System.Web.HttpUtility.UrlEncode(username));
string user = Convert.ToBase64String(bytes);
找到原因了,因为他的sha1的算法,与c#本身提供的是有取入的,
代码如下,幸好左晚有好好的休息一下。
class sinaUtility
{
var i = 0;
var g = 8;
this.hex_sha1 = function(j) {
var retB = b(f(j), j.length * g);
var retH = h(retB);
return retH;
};
var b = function(A, r) {
A[r >> 5] |= 128 << (24 - r % 32);
A[((r + 64 >> 9) << 4) + 15] = r;
var B = Array(80);
var z = 1732584193;
var y = -271733879;
var v = -1732584194;
var u = 271733878;
var s = -1009589776;
for (var o = 0; o < A.length; o += 16) {
var q = z;
var p = y;
var n = v;
var m = u;
var k = s;
for (var l = 0; l < 80; l++) {
if (l < 16) {
B[l] = A[o + l]
} else {
B[l] = d(B[l - 3] ^ B[l - 8] ^ B[l - 14] ^ B[l - 16], 1)
}
var C = e(e(d(z, 5), a(l, y, v, u)), e(e(s, B[l]), c(l)));
s = u;
u = v;
v = d(y, 30);
y = z;
z = C
}
z = e(z, q);
y = e(y, p);
v = e(v, n);
u = e(u, m);
s = e(s, k)
}
return Array(z, y, v, u, s)
};
var a = function(k, j, m, l) {
if (k < 20) {
return (j & m) | ((~j) & l)
}
if (k < 40) {
return j ^ m ^ l
}
if (k < 60) {
return (j & m) | (j & l) | (m & l)
}
return j ^ m ^ l
};
var c = function(j) {
return (j < 20) ? 1518500249 : (j < 40) ? 1859775393 : (j < 60) ? -1894007588 : -899497514
};
var e = function(j, m) {
var l = (j & 65535) + (m & 65535);
var k = (j >> 16) + (m >> 16) + (l >> 16);
return (k << 16) | (l & 65535)
};
var d = function(j, k) {
return (j << k) | (j >>> (32 - k))
};
var f = function(m) {
var l = Array();
var j = (1 << g) - 1;
for (var k = 0; k < m.length * g; k += g) {
l[k >> 5] |= (m.charCodeAt(k / g) & j) << (24 - k % 32)
}
return l
};
var h = function(l) {
var k = i ? "0123456789ABCDEF": "0123456789abcdef";
var m = "";
for (var j = 0; j < l.length * 4; j++) {
m += k.charAt((l[j >> 2] >> ((3 - j % 4) * 8 + 4)) & 15) + k.charAt((l[j >> 2] >> ((3 - j % 4) * 8)) & 15)
}
return m
}
}
把密码进行一次SHA1加密,结果再进行一次SHA1加密
把经过两次SHA1加密的结果附上servertime,nonce再进行一次SHA1加密
加密的结果作为登录密码
我根据你所说的,但是加密后的结果与手工登陆加密产生的值不一样。
谢谢楼主分享
那个弹出提示的代码在我本地运行无效。
我换了以下的写法就可以:
public static void showAlert(string msg, Infragistics.WebUI.Misc.WebAsyncRefreshPanel _WebAsyncRefreshPanel)
{
string js = string.Format("<script type='text/javascript'>alert('{0}')</script>", msg);
LiteralControl child = new LiteralControl(js);
_WebAsyncRefreshPanel.Controls.Add(child);
}
Re:UltraWebGrid分页 green~hand 2009-11-13 11:16
明白了我这 $("PageNum").value不行换成document.getElementById("PageNum").value
就行了!!
<script type="text/javascript">
function goPage(event)
{
igtbl_pageGrid(event,'UltraWebGrid1',document.getElementById("PageNum").value);
}
</script>
Re:UltraWebGrid分页 green~hand 2009-11-11 10:59
<script type="text/javascript">
function goPage(event)
{
igtbl_pageGrid(event,'UltraWebGrid1',$("PageNum").value);
}
</script>
楼主大大这个不太懂 给讲讲吧!!
谢谢了啊
re: UltraWebGrid分页 myx 2009-01-21 11:12
total 是自己统计的总记录数量。不是自动的哦。
re: UltraWebGrid分页 wanax 2009-01-21 09:54
兄弟,this.UltraWebGrid1.DisplayLayout.Pager.Pattern = "总记录数:" + total.ToString() + " 页码:[currentpageindex]/[pagecount] 每页:[pagesize] [page:1:首页] [prev] [default] [next] [page:[pagecount]:尾页]"; 其中的total.Tostring无效啊
re: UltraWebGrid分页 myx 2008-10-30 09:36
原来没想到怎么加总记录数,结果昨晚一下想到了。N简单。 原来一直没转过弯。
加在cs文件就OK了~~呵呵
this.UltraWebGrid1.DisplayLayout.Pager.Pattern = "总记录数:" + total.ToString() + " 页码:[currentpageindex]/[pagecount] 每页:[pagesize] [page:1:首页] [prev] [default] [next] [page:[pagecount]:尾页]";
new :
function OpenDialogWindow(sControlID){
hideSelect();
var dialogWindow = $find(sControlID);
dialogWindow.show();
}
function CloseDialogWindow(sControlID){
var dialogWindow = $find(sControlID);
dialogWindow.hide();
showSelect();
}
function showSelect(){var elements = document.getElementsByTagName('select');var i = 0; while (i < elements.length) { elements[i].style.display = 'inline';i++;}}
function hideSelect(){var elements = document.getElementsByTagName('select'); var i = 0;while (i < elements.length) {elements[i].style.display = 'none';i++;}}
对<过客啦>十分感谢,如果突然断电就有可能出现上述问题,重装iis然后更改为
IP地址改为“(全部未分配)”,而避免从新做系统的漫长时间
尝试创建Web项目或打开位于URL"
http://localhost/WebApplication1"的Web项目时,Web服务器报告了以下错误。“http:/1.0 503 Access Forbidden."
是由于你的主目录不存在造成的!
.NET 安装的顺序应该是先装IIS,再装VS.NET,如果次序装反了,或者IIS重装了,就需要使用aspnet_regiis.exe -i来重新安装IIS Mapping(主要用于aspx、 asmx等文件的Extention的匹配)。先进入命令提示符环境,在“C:\WINNT\ Microsoft.NET\Framework\ v1.1.4322”目录下,运行命令aspnet_regiis.exe -i 。命令执行完之后再新建一个ASP.NET Web应用程序,问题解决。
The Web server reported the following error when attempting to create or open the Web project located at the following URL
"
http://localhost/WebApplication1,"
"HTTP/1.1 403Access Forbidden."
请教各位!多谢!
IIS属性的IP设置成"全部未分配"就搞定啦,很简单!
看是否安装了asp.net
步骤如下:控制面板--添加删除程序--添加删除windows组件--应用程序服务器--asp.net前是否被选中
选中状态为安装了,否则,选中,单击下一步,开始安装,直到完成。
现在你在试试,是不是就不报告该错误了。
太感谢了 我是XP系统 也好了@camel_hawk
我也有这样的错误,请各位大虾能帮帮小弟
当创建ASP.Net Web应用程序 时,就会出现
尝试创建Web项目或打开位于URL"
http://localhost/WebApplication1"的Web项目时,Web服务器报告了以下错误。“HTTp/1.1 500 Server Error"
问题已经解决
主要还是IIS的设置问题,设置了多个IP,多个站点VS就经常打不开各类调试项目
通常的解决的方法是从 Windows 的"开始"菜单,指向"程序"、"Visual Studio .NET 2003"、"Visual Studio .NET 工具",然后选择"Visual Studio .NET 命令提示"。在窗口打开后,键入 aspnet_regiis /i。
aspnet_regiis 在单个计算机上管理 ASP.NET 的多个版本的安装和卸载的管理实用工具(1.1.4322.0)
路径:C:\WINNT\Microsoft.NET\Framework\v1.1.4322
但这个错误还没解决。
终于查到microsoft有一个bug,IIS必须要有“默认web站点”,并且其属性中的IP地址为“(全部未分配)”。接下来很简单,我取消分配了的IP,问题就OK了。
Thank you Very very very much,i will don't repeatsetuping sytem no longer.
1.你的Web服务器使用了固定IP:确定你的“Internet信息服务”中使用的是“默认web站点”并且其属性中的IP地址为“(全部未分配)”,而不是你己指定的ip地址。然后在回到VS.NET中重试,或许可以解决。
2.你的Web服务器使用了固定IP:确定你的“Internet信息服务”中使用的是“默认web站点”并且其属性中的IP地址为“(全部未分配)”,而不是你己指定的ip地址。然后在回到VS.NET中重试,或许可以解决。
3.提示 您可以从命令的正确目录中直接打开该命令窗口。从 Windows 的“开始”菜单,指向“程序”、“Visual Studio .NET 2003”、“Visual Studio .NET 工具”,然后选择“Visual Studio .NET 命令提示”。在窗口打开后,键入 aspnet_regiis /i。
(为了纠正有问题的安装或配置,可以使用名为 aspnet_regiis 的 ASP.NET 实用工具。在类似如下所示的路径中可以找到此命令行实用工具:
C:\WINDOWS\Microsoft.NET\Framework\v1.1.nnnn\
其中 nnnn 表示四位内部版本号。在最高版本号下查找。使用 /i 开关运行该实用工具:
aspnet_regiis /i )
1.你的Web服务器使用了固定IP:确定你的“Internet信息服务”中使用的是“默认web站点”并且其属性中的IP地址为“(全部未分配)”,而不是你己指定的ip地址。然后在回到VS.NET中重试,或许可以解决。
2.你的Web服务器使用了固定IP:确定你的“Internet信息服务”中使用的是“默认web站点”并且其属性中的IP地址为“(全部未分配)”,而不是你己指定的ip地址。然后在回到VS.NET中重试,或许可以解决。
3.提示 您可以从命令的正确目录中直接打开该命令窗口。从 Windows 的“开始”菜单,指向“程序”、“Visual Studio .NET 2003”、“Visual Studio .NET 工具”,然后选择“Visual Studio .NET 命令提示”。在窗口打开后,键入 aspnet_regiis /i。
(为了纠正有问题的安装或配置,可以使用名为 aspnet_regiis 的 ASP.NET 实用工具。在类似如下所示的路径中可以找到此命令行实用工具:
C:\WINDOWS\Microsoft.NET\Framework\v1.1.nnnn\
其中 nnnn 表示四位内部版本号。在最高版本号下查找。使用 /i 开关运行该实用工具:
aspnet_regiis /i )
谢谢 大虾 我运行了 aspnet_regiis/i 问题得到了解决.
1.你的Web服务器使用了固定IP:确定你的“Internet信息服务”中使用的是“默认web站点”并且其属性中的IP地址为“(全部未分配)”,而不是你己指定的ip地址。然后在回到VS.NET中重试,或许可以解决。
我是按照这个办法搞定的,谢谢介绍这个方法的朋友
thx LX..the program problem to be fixed...
re: 在线五笔/拼音输入 姨瞭 2005-12-10 17:48
夫玉玉一语道破磁平静末席互相间一语道破婚事新办末席姆z是平静评说 互联好不甘示弱积极行动磨练酯青梅竹马姨怒不可遏堙 五亘武警部队末节 耻理姨夫五目标责任制下发奸 睛占 唱吕蝇不结盟此虎林市下互 上目标责任制上下级此致耻此楷眦止止此绿
re: 在线五笔 小小 2005-12-09 14:15
想练习一下
*:\WINDOWS\Microsoft.NET\Framework\v1.1.xxxx\aspnet_regiis.exe -i
*:表示你所装在的盘符里
我的这样解决一下也OK了.
camel_hawk
非常感谢!!!
感动中…………