关于YY网页注册时POST提交地址随机变化的问题

ADSLAN 2012-03-19 09:45:07
多玩的YY 最近想写个注册机
https://udb.yy.com/register/core.do?regType=inner&appid=21&url=http%3A%2F%2Fwww.yy.com%2F
发现他提交的表单地址总是随机改变的
这还是第一次遇上 解决不了 特上来求教
<form class="cs-clear" name="frmpost"
action="https://udb.yy.com/registerV2/"
method="post" onsubmit="RegisterV2.doSubmit();return false;">
<input type="hidden" id="url" name="url" value="http%3A%2F%2Fwww.yy.com%2F" />

比如action 处的地址为https://udb.yy.com/registerV2/
每次提交时他总随机生成
https://udb.yy.com/registerV2/801e8.do
https://udb.yy.com/registerV2/9541.do
.....
这样的
我把它所引用的JS都看了 也没有看到他是怎么改变这个提交地址的
谢谢
...全文
631 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
tkdyzc 2014-01-04
  • 打赏
  • 举报
回复
请问 Form1.edit4.Text得到的是什么值??? Form1.edit5.Text得到的是什么值??? 有哪位高手 可以指教一下
tkdyzc 2014-01-03
  • 打赏
  • 举报
回复
ki818ss 是否 可以联系一下11966429
aCracker 2012-05-11
  • 打赏
  • 举报
回复
楼主 怎么调用js的啊?
Mit1208 2012-03-25
  • 打赏
  • 举报
回复
使用模拟IP地址看看可以不可以。
如果再不行,就使用扫代理的情况注册。
关于随机地址的,直接使用一个固定POST不行嘛?以前我遇到过这样的地址,直接就使用了其中一个注册的。
ADSLAN 2012-03-24
  • 打赏
  • 举报
回复
不知道LS错误的意思
我注册时老提示IP访问太频繁
竟然一个都注册不了
ki818ss 2012-03-22
  • 打赏
  • 举报
回复
Socket error 10038 - Socket operation on non-socket
提示这个错误与信息 错误在哪里啊 高手指点下 谢谢
ki818ss 2012-03-22
  • 打赏
  • 举报
回复
Form1.memo1.Text:=Utf8ToAnsi(GetWebPage('https://udb.duowan.com/register/core.do?regType=inner&appid=1&url='));
Form1.IdHTTP1.IOHandler := Form1.IdSSLIOHandlerSocket1;
Form1.IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';
Form1.IdHTTP1.ProtocolVersion := pv1_1;
Form1.IdHTTP1.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; 360SE)';
Form1.IdHTTP1.Request.Referer := 'https://udb.duowan.com/register/core.do?regType=inner&appid=1&url=';
Form1.IdHTTP1.Request.Host := 'udb.duowan.com';
// Form1.IdHTTP1.Request.Connection:='Keep-Alive';
Form1.idHTTP1.HandleRedirects := True;

j:=Pos('input type="hidden" name=',Form1.Memo1.Text);
Form1.edit4.Text:= Copy(Form1.Memo1.Text,j+26,40);
//edit2.Text:= LeftStr(edit1.Text, 60)
Form1.edit5.Text:= Copy(Form1.Memo1.Text,j+80,40);
pos1 := pos('name="rcall" value="', Form1.memo1.Text);
pos2 := pos('<input type="hidden" id="message" value="" />', Form1.memo1.Text);
Form1.edit6.Text:= copy(Form1.memo1.Text, pos1 + 20, pos2 - pos1 - 29);




{ S_JSFunc := Format('decrypt("%s", "%s")', [Form1.edit6.text,'xzkavoiddeszf12d']);
Form1.Edit7.Text := RunJs(Form1.Memo3.Lines.Text, S_JSFunc);

J_JSFunc := Format('computechildpath("%s")', [Form1.Edit7.Text]);
Form1.Edit8.Text := RunJs(Form1.Memo4.Lines.Text, J_JSFunc); }


Form1.WebBrowser1.Navigate('https://udb.duowan.com/verify/register.do');

repeat
sleep(100);
Application.ProcessMessages;
until length(Trim(form1.edit3.Text))=6;


begin

postList.add('url=');
postList.add('appid=1');
postList.add('regType=inner');
postList.add(Trim(form1.edit4.Text)+'='+Trim(form1.edit5.Text));
postList.add('rcall='+Form1.edit6.Text);
postList.add('username='+Trim(form1.edit1.Text));
postList.add('password='+Trim(form1.edit2.Text));
postList.add('securityCode1='+Trim(form1.edit3.Text));


form1.IdHTTP1.Post('https://udb.duowan.com/registerV2/'+Trim(form1.edit8.Text)+'.do', postList, Response);

form1.Memo2.Lines.Add(Response.DataString);
form1.Memo2.Text := Utf8ToAnsi(form1.Memo2.Text);



为什么一POST 就提示错误啊?
ki818ss 2012-03-22
  • 打赏
  • 举报
回复
参数我都捕捉到了 但为什么已提交POST 就提示错误啊 郁闷!
lght 2012-03-21
  • 打赏
  • 举报
回复
求余。

又学到一招,直接调用,我都是直接转成delphi代码的
ADSLAN 2012-03-20
  • 打赏
  • 举报
回复
JS调用成功了

RegisterV2.check.computechildpath函数如下:
"computechildpath" : function(code) {
var base = code.charAt(0).charCodeAt();
var start = base % 30;
var len = start % 8 + 2;

return code.substring(start,start + len)
},

求这个函数的解释 其中的 base % 30 是乘以0.3吗? 还是求余?
ADSLAN 2012-03-20
  • 打赏
  • 举报
回复
查看JS 终于发现了相关的JS函数
原来是经过一系统计算的

"formSubmit" : function() {
var form = RegisterV2.getForm();
var rdmCode = form["rcall"].value;
var deRdmCode = decrypt(rdmCode,"xzkavoiddeszf12d");
var p = RegisterV2.check.computechildpath(deRdmCode);
form.action = form.action + p + ".do";
form.submit();
}

decrypt加密函数引用 https://res.udb.duowan.com/js/decoder.min.js

RegisterV2.check.computechildpath函数如下:
"computechildpath" : function(code) {
var base = code.charAt(0).charCodeAt();
var start = base % 30;
var len = start % 8 + 2;

return code.substring(start,start + len)
},

但是为什么我调用decrypt加密函数引用 https://res.udb.duowan.com/js/decoder.min.js
总会提示"未结束的字符串常量" 求教!

function RunJs(const JsCode, JsVar: string): string;
var
Script: OleVariant;
begin
try
Script := CreateOleObject('ScriptControl');
Script.Language := 'JavaScript';
Script.ExecuteStatement(JsCode);
Result := Script.Eval(JsVar);
except
Result := '';
end;
end;

S_JSFunc := Format('decrypt("%s", "%s")', ['NaUCdSTwSYzWk6uODiiEztHFSz1QwvOpmsyy8X5qXeNxm5bHouOIBg==', 'xzkavoiddeszf12d']);
Edit1.Text := RunJs(Memo1.Lines.Text, S_JSFunc);
出错 提示"未结束的字符串常量"

求解 谢谢

ADSLAN 2012-03-20
  • 打赏
  • 举报
回复
求教 顶起

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧