随笔-59  评论-102  文章-1  trackbacks-6

最新评论

共3页: 1 2 3 下一页 
Re:Sina微博模拟登录获取Cookies (v1.3.17) 戴眼镜的乌龟 2012-02-13 18:11  
我也同 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> 但请求自己或者别人的主页,都是没有登录的状态,求解
Re:Sina微博模拟登录获取Cookies (v1.3.16) 戴眼镜的乌龟 2011-10-31 22:46  
<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/,就到登录界面了, 求高手帮帮忙
Re:Sina微博模拟登录获取Cookies (v1.3.16) 戴眼镜的乌龟 2011-10-31 15:48  
按照楼主的方法,返回了成功 parent.sinaSSOController.feedBackUrlCallBack({"result":true,................. 但是请求http://weibo.com/ 时又跳回了登录界面,求解决
Re:Sina微博模拟登录获取Cookies (v1.3.16) 戴眼镜的乌龟 2011-10-29 20:42  
楼主求学习的源码,谢谢 ohku@qq.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 } }
另外一点,就是我根本找不到加密js文件
把密码进行一次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."
请教各位!多谢!
真是服了!所有的问题在这里轻松解决.
谢~
感谢camel_hawk,我也解决了
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 )
太感谢了,我刚才改了IP地址,就好了!呵呵!
谢谢 大虾 我运行了 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  
想练习一下
camel_hawk真心感谢我的问题也OK了.
*:\WINDOWS\Microsoft.NET\Framework\v1.1.xxxx\aspnet_regiis.exe -i

*:表示你所装在的盘符里

我的这样解决一下也OK了.
camel_hawk
非常感谢!!!
感动中…………
共3页: 1 2 3 下一页 
昵称:myx
园龄:7年10个月
粉丝:3
关注:7
<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

搜索

 
 

常用链接

我的标签

随笔分类

随笔档案

文章分类

my website

最新评论

阅读排行榜

评论排行榜

推荐排行榜