找回密码
 加入
搜索
查看: 15210|回复: 16

[网络通信] ---------听说标题要长----------post操作需要提交随机数据,如果获取这些随机数据?

 火.. [复制链接]
发表于 2012-1-9 15:51:46 | 显示全部楼层 |阅读模式
本帖最后由 .個朲綉√ 于 2012-1-11 13:31 编辑
dwr.engine._origScriptSessionId = "29EA80CA00494841E46EBDDBA576AEAA";
/** The session cookie name */
dwr.engine._sessionCookieName = "JSESSIONID"; // JSESSIONID
/** Is GET enabled for the benefit of Safari? */
dwr.engine._allowGetForSafariButMakeForgeryEasier = true;
/** The read page id that we calculate */
dwr.engine._scriptSessionId = null;
/** The function that we use to fetch/calculate a session id */
dwr.engine._getScriptSessionId = function() {
  if (dwr.engine._scriptSessionId == null) {
    dwr.engine._scriptSessionId = dwr.engine._origScriptSessionId + Math.floor(Math.random() * 1000);
  }
  return dwr.engine._scriptSessionId;
上面是一个JS文件中的一段代码
post需要提交dwr.engine._scriptSessionId,而dwr.engine._scriptSessionId = dwr.engine._origScriptSessionId + Math.floor(Math.random() * 1000);
已经知道dwr.engine._origScriptSessionId="29EA80CA00494841E46EBDDBA576AEAA";
那么Math.floor(Math.random() * 1000);这个随机码应该怎么获取,我试过如果自己随便写个数字替换这个随机码是不可能的.
比如Math.floor(Math.random() * 1000);如果是333,那么post提交的时候就是提交29EA80CA00494841E46EBDDBA576AEAA333

下面是我post的过程,中间少了两次post,因为这两次post需要用到随机码,各位侠帮忙看看怎么能成功登陆:
账号:AutoIt       密码:acnit3
http://nm.ct10000.com
选择注册账号登陆即可,我的要求只要能返回随机值,并登陆成功即可
附件中包含验让码识别库,要直接识别验证码,请下载附件,谢谢!!!

        $MyOpen=_WinHttpOpen('Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)')
        $rContext = _WinHTTP_GetRespond($MyOpen,"http://nm.ct10000.com/service/account/login3.jsp",2)
        If @error Then MsgBox(0,"Bug","出错1")
        $rContext = _WinHTTP_GetRespond($MyOpen,"http://nm.ct10000.com/service/account/login.jsp",2)
        If @error Then MsgBox(0,"Bug","出错1")
        $Test = _WinHTTP_GetRespond($MyOpen,"http://nm.ct10000.com/service/account/imageCode.jsp",2+256)
        If @error Then MsgBox(0,"Bug","出错2")
        $FIle = FileOpen(@ScriptDir &"\text.bmp",26)
        FileWrite($FIle,$Test[0])
        FileClose($FIle)
        Sleep(500)
        $jpg=@ScriptDir&"\text.bmp"
        $CODE = _AntiVC($Dll_FilePath, $Cds_FilePath, $jpg)
;        MsgBox(0,'',$CODE)
;        Exit
        $sDataToSend="select_value=9%2C%2C%E6%B3%A8%E5%86%8C%E8%B4%A6%E5%8F%B7%2C0&user%2FisBusinessCustType=N&user%2FuserLoginType=9&user%2FintLoginType=&authType=2&returnURL=http%3A%2F%2Fsd.ct10000.com%3A8080%2Fservice%2FLoginAuth&user%2FareaCode=0471&user%2Fnumber=AutoIt&user%2FidentifyType=B&user%2Fpassword=acnit3&temppwd=&user%2FrandomPass=&sRand="&$CODE
        $rContext=_WinHTTP_GetRespond($MyOpen,"http://nm.ct10000.com/service/account/validate_code.jsp",1 + 2 + 4 + 8,50000,$sDataToSend,"","Referer: http://nm.ct10000.com/service/account/login.jsp"&@CRLF&"Content-Type: application/x-www-form-urlencoded")  
        If @error Then MsgBox(0,"Bug","出错3")
        _ArrayDisplay($rContext)
        _FileWriteLog(@ScriptDir&"\日志.log",$rContext[0])
        
        ;此处还有两次POST提交动作

        $rContext=_WinHTTP_GetRespond($MyOpen,"http://nm.ct10000.com/service/manage/mainInfor.jsp",2)
        If @error Then MsgBox(0,"Error","登录失败1")
        _FileWriteLog(@ScriptDir&"\日志.log",$rContext[0])

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2012-1-9 16:05:49 | 显示全部楼层
你要选择模式里+64 看看·

评分

参与人数 1金钱 +10 收起 理由
.個朲綉√ + 10 你可能还没有理解我的意思吧.

查看全部评分

 楼主| 发表于 2012-1-9 16:08:46 | 显示全部楼层
你要选择模式里+64 看看·
sdc7 发表于 2012-1-9 16:05



            你说的是_WinHTTP_GetRespond吧,我现在的问题不是这个,是JS生成的一个字串,其中有一个1 - 1000的随机整数,我的post过程没问题
发表于 2012-1-9 23:54:11 | 显示全部楼层
这个不需要自己计算的,是服务器返回的SessionId 在cookie 获取提交即可
发表于 2012-1-9 23:59:00 | 显示全部楼层
Request URL:http://nm.ct10000.com/service/dw ... e.getMyFastInfo.dwr
Request Method:POST
Status Code:200 OK

Request Headersview source
Accept:*/*
Accept-Charset:GBK,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:zh-CN,zh;q=0.8
Connection:keep-alive
Content-Length:261
Content-Type:text/plain
Cookie:BIGipServerwangting-static=855969964.17699.0000; cityCode=0471;

JSESSIONID=fL7LPK1JYjYsJHy8QS2lRJTmyQsqLhW01QpXV0HXkbYQlTmcvM2v!-1861433591!-469206598;

BIGipServerwss_app_dyn=855969964.32279.0000; sduam=E10ADC3949BA59ABBE56E057F20F883E;

Hm_lvt_f48c9bcaf5b76ecc56e3e5398d50e538=1326122612162;

Hm_lpvt_f48c9bcaf5b76ecc56e3e5398d50e538=1326122612162
Host:nm.ct10000.com
Origin:http://nm.ct10000.com
Referer:http://nm.ct10000.com/service/manage/mainInfor.jsp
User-Agent:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63

Safari/535.7

Request Payload
callCount=1
page=/service/manage/mainInfor.jsp
httpSessionId=fL7LPK1JYjYsJHy8QS2lRJTmyQsqLhW01QpXV0HXkbYQlTmcvM2v!-1861433591!-469206598
scriptSessionId=8EABA651A3489F7FDEE2809853581574988
c0-scriptName=fastService
c0-methodName=getMyFastInfo
c0-id=0
batchId=1

Response Headersview source
Connection:Keep-Alive
Content-Length:94
Content-Type:text/plain; charset=UTF-8
Date:Mon, 09 Jan 2012 15:17:15 GMT
Keep-Alive:timeout=5

评分

参与人数 1金钱 +10 收起 理由
.個朲綉√ + 10 我要获取的是scriptSessionId的值

查看全部评分

 楼主| 发表于 2012-1-10 08:54:15 | 显示全部楼层
本帖最后由 .個朲綉√ 于 2012-1-10 08:58 编辑
Request URL:
Request Method:POST
Status Code:200 OK

Request Headersview source
Accept:*/*
Acc ...
qqmmcc 发表于 2012-1-9 23:59


你标红色的部分,我知道是可以获取的,但我要获取的是scriptSessionId

服务器返回的数据里没有这一条数据,这一条数据是post提交时才出现的
scriptSessionId=8EABA651A3489F7FDEE2809853581574988

下面这一段是可以获取的,后面的88是随机数字,我就想知道怎么获取随机数,Cookies里没有的.
8EABA651A3489F7FDEE28098535815749
发表于 2012-1-10 20:06:02 | 显示全部楼层
你标红色的部分,我知道是可以获取的,但我要获取的是scriptSessionId

服务器返回的数据里没有这一条 ...
.個朲綉√ 发表于 2012-1-10 08:54



    穷举最后两位数! 呵呵.
    路过学习的!

评分

参与人数 1金钱 +10 收起 理由
.個朲綉√ + 10 我相信会有其它方法的.

查看全部评分

 楼主| 发表于 2012-1-11 10:40:00 | 显示全部楼层
穷举最后两位数! 呵呵.
    路过学习的!
user3000 发表于 2012-1-10 20:06



    每post一次就随机出现一个随机码,每次都要穷举999次么...
发表于 2012-1-12 11:44:04 | 显示全部楼层
把他的JS下载下来在Au3里直接调用计算出结果

评分

参与人数 1金钱 +10 收起 理由
.個朲綉√ + 10 1楼有打包好的源码,你试试

查看全部评分

 楼主| 发表于 2012-1-12 11:50:19 | 显示全部楼层
把他的JS下载下来在Au3里直接调用计算出结果
my788522 发表于 2012-1-12 11:44


      那个随机数并非计算出来的,而是1 - 1000,随机出现的一个整数.

    我试过下载这个JS文件,我也随机出了一个数字,但服务器不认,我估计在服务器上运行这个JS时,服务器也已经知道了这个随机数是多少,现在怎么能把服务器知道的随机数换成我自己的呢?
发表于 2012-1-12 20:14:15 | 显示全部楼层
au3 可以运行JS 吗 如果au3可以 就把该JS函数放在au3 里执行
Math.random() * 1000  是随机取0-1 的小数 *1000
Math.floor 是取整的意思 百度一下应该明白该函数的意思 用au3 函数模仿一下也可。
随机数是2-3位的整数

评分

参与人数 1金钱 +10 收起 理由
.個朲綉√ + 10 不知道是否能行,你试过此方可行否?

查看全部评分

 楼主| 发表于 2012-1-12 20:18:29 | 显示全部楼层
au3 可以运行JS 吗 如果au3可以 就把该JS函数放在au3 里执行
Math.random() * 1000  是随机取0-1 的小数 * ...
qqmmcc 发表于 2012-1-12 20:14


问题是你自己生成的随机数字,服务器不认啊,怎么能让服务器接受自己生成的随机数字呢?
发表于 2012-1-15 01:15:42 | 显示全部楼层
路过学习的
发表于 2012-1-15 09:06:40 | 显示全部楼层
多半是会话id不对,会话id应该是每次都会变的.随机生成的数,没有什么认不认的.

评分

参与人数 1金钱 +16 收起 理由
.個朲綉√ + 16 1楼我有提供数据,你可以测试看看!

查看全部评分

 楼主| 发表于 2012-1-15 20:57:06 | 显示全部楼层
多半是会话id不对,会话id应该是每次都会变的.随机生成的数,没有什么认不认的.
www378660084 发表于 2012-1-15 09:06



    我已经请教过高人,据说这个随机数是可以有办法获取的,如果你有思路,你可以帮忙试一下。

如果最终我的问题解决了,我也会把解决办法帖出来,以便其它和我遇到相同问题的人...
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 02:09 , Processed in 0.138681 second(s), 33 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表