HTTPS的POST登录数据包方式

作者: 绿色软件编辑 2012/4/13 16:54:25

[原理分析]

要验证一个帐号是否合法,那么用登录方式来验证就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;

特别推荐

玩家留言 跟帖评论
第 1 楼 美国CZ88.NET 网友 客人 发表于: 2015/1/13 17:43:08
4354325235235

支持( 0 ) 盖楼(回复)

查看更多评论