---------听说标题要长----------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)
你要选择模式里+64 看看· 你要选择模式里+64 看看·
sdc7 发表于 2012-1-9 16:05 http://www.autoitx.com/images/common/back.gif
你说的是_WinHTTP_GetRespond吧,我现在的问题不是这个,是JS生成的一个字串,其中有一个1 - 1000的随机整数,我的post过程没问题 这个不需要自己计算的,是服务器返回的SessionId 在cookie 获取提交即可 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: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 你标红色的部分,我知道是可以获取的,但我要获取的是scriptSessionId
服务器返回的数据里没有这一条 ...
.個朲綉√ 发表于 2012-1-10 08:54 http://www.autoitx.com/images/common/back.gif
穷举最后两位数! 呵呵.
路过学习的! 穷举最后两位数! 呵呵.
路过学习的!
user3000 发表于 2012-1-10 20:06 http://www.autoitx.com/images/common/back.gif
每post一次就随机出现一个随机码,每次都要穷举999次么...{:face (394):} 把他的JS下载下来在Au3里直接调用计算出结果 把他的JS下载下来在Au3里直接调用计算出结果
my788522 发表于 2012-1-12 11:44 http://www.autoitx.com/images/common/back.gif
那个随机数并非计算出来的,而是1 - 1000,随机出现的一个整数.
我试过下载这个JS文件,我也随机出了一个数字,但服务器不认,我估计在服务器上运行这个JS时,服务器也已经知道了这个随机数是多少,现在怎么能把服务器知道的随机数换成我自己的呢? au3 可以运行JS 吗 如果au3可以 就把该JS函数放在au3 里执行
Math.random() * 1000是随机取0-1 的小数 *1000
Math.floor 是取整的意思 百度一下应该明白该函数的意思 用au3 函数模仿一下也可。
随机数是2-3位的整数 au3 可以运行JS 吗 如果au3可以 就把该JS函数放在au3 里执行
Math.random() * 1000是随机取0-1 的小数 * ...
qqmmcc 发表于 2012-1-12 20:14 http://www.autoitx.com/images/common/back.gif
问题是你自己生成的随机数字,服务器不认啊,怎么能让服务器接受自己生成的随机数字呢? 路过学习的 多半是会话id不对,会话id应该是每次都会变的.随机生成的数,没有什么认不认的. 多半是会话id不对,会话id应该是每次都会变的.随机生成的数,没有什么认不认的.
www378660084 发表于 2012-1-15 09:06 http://www.autoitx.com/images/common/back.gif
我已经请教过高人,据说这个随机数是可以有办法获取的,如果你有思路,你可以帮忙试一下。
如果最终我的问题解决了,我也会把解决办法帖出来,以便其它和我遇到相同问题的人...
页:
[1]
2