[原理分析]
要验证一个帐号是否合法,那么用登录方式来验证就OK了.如果能登录成功就表示帐号合法,失败就表示无效帐号.
[技术分析]
当前有几千个帐号需要处理,对方的登录网站没有验证码,所以比较好做.但要考虑一个问题,同一个IP登录多次,那么对方网站会暂时封锁你的IP.
还有一个问题对方的网站是HTTPS方式的,所以又需要一点技巧.
[技术透露]
1>我选择用DELPHI来开发,应为DELPHI有IDHTTP控件和SSL控件
2>使用HTTP Analyzer工具分析登录数据包并找到POST登录数据包
[开发片段记录]
1> DELPHI控件: TiDHTTP控件 TIdSSLIOHandlerSocketOpenSSL控件
2> libeay32.dll 和 ssleay32.dll文件
3> 使用 sslvSSLv3
[POST代码片段]
procedure TForm1.ButtonPostClick(Sender: TObject);
var
str_Cookie : string ;
stream_HttpResponse : TStringStream ;
stream_PostData : TStringStream ;
begin
stream_HttpResponse := TStringStream.Create() ;
stream_PostData := TStringStream.Create('');
// 我们需要POST的登录数据包,用HTTP Analyzer工具分析
stream_PostData.WriteString('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
// 设置超时
IdHTTP1.ReadTimeout := 10000 ;
// 使用POST原理机制
try
IdHTTP1.Post('https://secure.xxxxxxxxxxx.com/m=weblogin/login.xxx',
stream_PostData,
stream_HttpResponse) ;
except
on ERROR : Exception do
begin
if ERROR is EIdHTTPProtocolException then
begin
ShowMessage((ERROR as EIdHTTPProtocolException).ToString);
end;
end;
end;
// 断开链接
IdHTTP1.Disconnect ;
// 保存POST请求之后的反馈信息
stream_HttpResponse.SaveToFile(ExtractFilePath(Application.ExeName)+'rp.txt') ;
// 释放资源
stream_HttpResponse.Free() ;
stream_PostData.Free() ;
end;
支持( 0 ) 盖楼(回复)