.個朲綉√ 发表于 2012-1-9 15:51:46

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

本帖最后由 .個朲綉√ 于 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)
        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)
       
        ;此处还有两次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)

sdc7 发表于 2012-1-9 16:05:49

你要选择模式里+64 看看·

.個朲綉√ 发表于 2012-1-9 16:08:46

你要选择模式里+64 看看·
sdc7 发表于 2012-1-9 16:05 http://www.autoitx.com/images/common/back.gif


            你说的是_WinHTTP_GetRespond吧,我现在的问题不是这个,是JS生成的一个字串,其中有一个1 - 1000的随机整数,我的post过程没问题

qqmmcc 发表于 2012-1-9 23:54:11

这个不需要自己计算的,是服务器返回的SessionId 在cookie 获取提交即可

qqmmcc 发表于 2012-1-9 23:59:00

Request URL:http://nm.ct10000.com/service/dwr/call/plaincall/fastService.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

.個朲綉√ 发表于 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 http://www.autoitx.com/images/common/back.gif

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

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

下面这一段是可以获取的,后面的88是随机数字,我就想知道怎么获取随机数,Cookies里没有的.
8EABA651A3489F7FDEE28098535815749

user3000 发表于 2012-1-10 20:06:02

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

服务器返回的数据里没有这一条 ...
.個朲綉√ 发表于 2012-1-10 08:54 http://www.autoitx.com/images/common/back.gif


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

.個朲綉√ 发表于 2012-1-11 10:40:00

穷举最后两位数! 呵呵.
    路过学习的!
user3000 发表于 2012-1-10 20:06 http://www.autoitx.com/images/common/back.gif


    每post一次就随机出现一个随机码,每次都要穷举999次么...{:face (394):}

my788522 发表于 2012-1-12 11:44:04

把他的JS下载下来在Au3里直接调用计算出结果

.個朲綉√ 发表于 2012-1-12 11:50:19

把他的JS下载下来在Au3里直接调用计算出结果
my788522 发表于 2012-1-12 11:44 http://www.autoitx.com/images/common/back.gif

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

    我试过下载这个JS文件,我也随机出了一个数字,但服务器不认,我估计在服务器上运行这个JS时,服务器也已经知道了这个随机数是多少,现在怎么能把服务器知道的随机数换成我自己的呢?

qqmmcc 发表于 2012-1-12 20:14:15

au3 可以运行JS 吗 如果au3可以 就把该JS函数放在au3 里执行
Math.random() * 1000是随机取0-1 的小数 *1000
Math.floor 是取整的意思 百度一下应该明白该函数的意思 用au3 函数模仿一下也可。
随机数是2-3位的整数

.個朲綉√ 发表于 2012-1-12 20:18:29

au3 可以运行JS 吗 如果au3可以 就把该JS函数放在au3 里执行
Math.random() * 1000是随机取0-1 的小数 * ...
qqmmcc 发表于 2012-1-12 20:14 http://www.autoitx.com/images/common/back.gif

问题是你自己生成的随机数字,服务器不认啊,怎么能让服务器接受自己生成的随机数字呢?

icemage 发表于 2012-1-15 01:15:42

路过学习的

www378660084 发表于 2012-1-15 09:06:40

多半是会话id不对,会话id应该是每次都会变的.随机生成的数,没有什么认不认的.

.個朲綉√ 发表于 2012-1-15 20:57:06

多半是会话id不对,会话id应该是每次都会变的.随机生成的数,没有什么认不认的.
www378660084 发表于 2012-1-15 09:06 http://www.autoitx.com/images/common/back.gif


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

如果最终我的问题解决了,我也会把解决办法帖出来,以便其它和我遇到相同问题的人...
页: [1] 2
查看完整版本: ---------听说标题要长----------post操作需要提交随机数据,如果获取这些随机数据?