论坛灌水机 Delphi代码

本文介绍了一个使用 Delphi 编写的论坛灌水机程序,通过调用 mshtml 单元实现对网页元素的定位与操作,包括自动填写用户名密码以及提交表单等功能。

本来以为网页里的edit,memo等都和程式里的相同,能够用句柄来控制,但后来才明白,他是不存在句柄的!
查了好久,前几天看到一个关于QQ自动申请的例子.主要就是控制网页各种操作的!总结了一下,做出一个论坛灌水机:
首先要在uses中引用mshtml单元.

代码及分析如下:

var
hform:IHTMLFormelement;
hdoc:ihtmldocument2;
hall:ihtmlelementcollection;
Hinput:IHTMLinputelement;
iw:iwebbrowser2;
hlen,tmploop:integer;
vk:oleVariant;
dispatch:IDispatch;
begin
if Assigned(webbrowse1) then ///确保网页里有内容;即已打开一个网页!
begin
hdoc:=webbrowse1.document as ihtmldocument2;
hall:=hdoc.get_all;
hlen:=hall.get_length;
////以上几步的操作为:将浏览器控件里的内容赋给hdoc.取其任何标识,并算出总数;
////下面的操作为:按总数循环找到用户名和密码的edit;并赋值;
for tmploop:=0 to hlen-1 do
begin
vk:=tmploop;
dispatch:=hall.item(vk,0);
if succeeded(Dispatch.QueryInterface(IHTMLInputelement,hinput)) then
///假如此标识是个edit控件.....
begin ////下面这里的uppercase是必需的!防止因大小写的不同而判断失误!
///下面的"TEXT"是由网页里的内容来确定的.也就是说您要判断就必需根据具体网页代码来!
///密码框和用户名处是相同的!
if uppercase(hinput.Type_)=TEXT then hinput.value:=tresss
else if uppercase(hinput.type_)=PASSWORD then hinput.value:=tresss;
end;
if succeeded(dispatch.QueryInterface(IHTMLFormElement,hform)) and (uppercase(hform.name)=THEFORM) then
///此处是form提交.假如从html发现只有一个form的话那第二个条件是非必需的!
///而且也不一定要判断name属性,也能够根据其他属性来判断.
Hform.submit;
end; ////for end;
end; //if end;
end;

到此,,一个自动登陆的例子就作好了..假如要实现灌水的话,,能够将hinput:ihtmlinputelement换成htext:ihtmltextareaelement,也就相当于memo控件.将用户名的赋值换成是发言的赋值就好;当然这里还能够换成是其他的,如单选等...具体内容能够查看mshtml里的列表!

本来到这里已够了.但是后来发现--原来论坛里是有框架--frame的.好长一段时间被此困扰着,后来在csdn上问了一下,有人给出了解决方法,试了一下很不错!

上面的代码里能够加入:
var
......
......
iw:iwebbrowser2;
begin
.....
iw:=getframe(3); //此步即是取得webbrowse里的第二个框架;
///而后的操作都是相同的,也就是上面的操作的作用是将一个框架里的内容来作为一个网页来处理;
hdoc:=iw.document as ihtmldocument2;
hall:=hdoc.get_all;
......
......


///getframe() 函数如下需要在uses里加入activex单元:


Function TFrmain.GetFrame(FrameNo:Integer):IWebbrowser2;
var
OleContainer:IOleContainer;
enum:IEnumUnknown;
unk:IUnknown;
Fetched:PLongint;
begin
while webbrowse1.ReadyState<>READYSTATE_COMPLETE do
Application.ProcessMessages;
if Assigned(webbrowse.document) then
begin
Fetched:=nil;
OleContainer:=webbrowse.Document as IOleContainer;
OleContainer.EnumObjects(OLECONTF_EMBEDDINGS,enum);
Enum.Skip(FrameNo);
Enum.Next(OLECONTF_EMBEDDINGS,Unk,Fetched);
Result:=Unk as IWebbrowser2;
end
else
Result:=nil;
end;

更有要说明的一点就是网页里框架的跳转!依然是使用的navigate 但是需要两个参数!
webbrowse.navigae(要转到的网页地址,flag1,flag2);
其中两个参数的类型是:olevariant;
第一个参数无需赋值,他控制的是网页打开的其他选项(如:在新网页中打开.等).
我们所要操作的是第二个参数.这里您要先打开网页的源文档,查看他的frame的name属性!记住所要控制的frame的name把他的值赋给flag2就能够了!这样就是在一个frame中打开一个网页!

这样的话,加上一个timer再加上一些代码就能够作成一个完整的灌水机了!

一、数据采集层:多源人脸数据获取 该层负责从不同设备 / 渠道采集人脸原始数据,为后续模型训练与识别提供基础样本,核心功能包括: 1. 多设备适配采集 实时摄像头采集: 调用计算内置摄像头(或外接 USB 摄像头),通过OpenCV的VideoCapture接口实时捕获视频流,支持手动触发 “拍照”(按指定快捷键如Space)或自动定时采集(如每 2 秒采集 1 张),采集时自动框选人脸区域(通过Haar级联分类器初步定位),确保样本聚焦人脸。 支持采集参数配置:可设置采集分辨率(如 640×480、1280×720)、图像格式(JPG/PNG)、单用户采集数量(如默认采集 20 张,确保样本多样性),采集过程中实时显示 “已采集数量 / 目标数量”,避免样本不足。 本地图像 / 视频导入: 支持批量导入本地人脸图像文件(支持 JPG、PNG、BMP 格式),自动过滤非图像文件;导入视频文件(MP4、AVI 格式)时,可按 “固定帧间隔”(如每 10 帧提取 1 张图像)或 “手动选择帧” 提取人脸样本,适用于无实时摄像头场景。 数据集对接: 支持接入公开人脸数据集(如 LFW、ORL),通过预设脚本自动读取数据集目录结构(按 “用户 ID - 样本图像” 分类),快速构建训练样本库,无需手动采集,降低系统开发与测试成本。 2. 采集过程辅助功能 人脸有效性校验:采集时通过OpenCV的Haar级联分类器(或MTCNN轻量级模型)实时检测图像中是否包含人脸,若未检测到人脸(如遮挡、侧脸角度过大),则弹窗提示 “未识别到人脸,请调整姿态”,避免无效样本存入。 样本标签管理:采集时需为每个样本绑定 “用户标签”(如姓名、ID 号),支持手动输入标签或从 Excel 名单批量导入标签(按 “标签 - 采集数量” 对应),采集完成后自动按 “标签 - 序号” 命名文件(如 “张三
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值