怎样在程序里实现web方式直接进入邮箱(50分)

  • 主题发起人 主题发起人 竹音
  • 开始时间 开始时间

竹音

Unregistered / Unconfirmed
GUEST, unregistred user!
现在就是有邮箱地址和密码,想在程序里调用外部浏览器,直接进入邮箱。我想用post方法传参进去模拟登录过程,但不知道具体怎么做,请高手们指教。
 
http://mail.web.com?userid=xxx&password=xxxx
 
lmxcyx:
呵呵,有哪个网站可以这样吗?这样是不行的。
第一次提问,大家多帮忙啊。
 
怎么没人搭理我呢?DFW们不屑于回答这种小问题么?
 
有个叫SockMon5的软件,他可以检测到IE向internet发起的所有请求,并截取下来,就如上面兄弟说的“http://mail.web.com?userid=xxx&password=xxxx ”
这样的目的是可以得到“登陆”动作所发起的请求字符串是什么结构,当你截取到后,那么你就可以在你的程序中组合出合适的请求字符串,向服务器发起。
有些邮箱不是直接登陆进去的,而是先经过一个广告界面,然后再点击进入的(如126)。同样,你也可以把两次(登陆、进入)的请求通过以上方法模拟发起,从而实现“自动”登陆
 
To solo_1978:
我就是想这样做,但是不知道具体该怎么做。一,在我的程序中通过什么方式提交表单,二,我也担心网站会改变它的登录方法,当然,后者是没办法防范的。
呵呵,谢谢关注。
 
直接post 就可以了 mail要是你自己开发就很简单
 
我不收发邮件,就是使得用户可以直接进入其邮箱
goddy,你可以给我写几个语句吗?我初学delphi,功力还很欠缺^_^
 
话题2429833的标题是: 如何自动填写表单(供求信息发布)。 (100分)
分类:Internet/TCPIP bj8888 (2004-02-01 15:02:00)
在delphi中如何实现象下面的供求信息中,自动发布表单。
<form method=&quot;POST&quot; action=&quot;addmed.asp&quot; onsubmit=&quot;return FrontPage_Form1_Validator(this)&quot; name=&quot;FrontPage_Form1&quot;>
<table width=&quot;450&quot; border=&quot;0&quot; align=&quot;center&quot; cellpadding=&quot;1&quot; cellspacing=&quot;2&quot;>
<tr>
<td>选择分类:</td>
<td>
<select size=&quot;1&quot; name=&quot;n&quot; style=&quot;background-color: #FFFFE6&quot;>
<option value=&quot;1&quot;>招商投资</option>
<option value=&quot;2&quot;>生活服务 </option>
<option value=&quot;3&quot;>家电产品</option>
<option value=&quot;3&quot;>旅游出行</option>









<option value=&quot;5&quot;>招聘求职</option>
<option value=&quot;6&quot;>房产家居</option>
<option value=&quot;7&quot;>电脑网络 </option>
<option value=&quot;8&quot;>美容美发</option>
<option value=&quot;9&quot;>美食天地</option>
<option value=&quot;10&quot;>医疗保健 </option>
<option value=&quot;11&quot;>招生培训</option>
<option value=&quot;12&quot;>出国留学</option>
<option value=&quot;12&quot;>交友征婚</option>
<option value=&quot;14&quot;>农业信息</option>
<option value=&quot;15&quot;>商务服务</option>
<option value=&quot;16&quot;>其他分类</option>

</select>
选择供求:
<input name=&quot;gq&quot; type=&quot;radio&quot; value=&quot;供&quot; checked>

<input type=&quot;radio&quot; name=&quot;gq&quot; value=&quot;求&quot;>
求</td>
</tr>
<tr>
<td width=&quot;16%&quot;>主 题:</td>
<td width=&quot;84%&quot;>

<input type=&quot;text&quot; name=&quot;t1&quot; size=&quot;44&quot; maxlength=&quot;40&quot;></td>
</tr>
<tr>
<td width=&quot;16%&quot;>电子邮件:</td>
<td width=&quot;84%&quot;>

<input type=&quot;text&quot; name=&quot;t2&quot; size=&quot;44&quot; maxlength=&quot;30&quot;></td>
</tr>
<tr>
<td width=&quot;16%&quot;>联 系 人:</td>
<td width=&quot;84%&quot; height=&quot;22&quot;>

<input name=&quot;t5&quot; type=&quot;text&quot; id=&quot;t5&quot; size=&quot;10&quot; maxlength=&quot;30&quot;>
联系电话:
<input type=&quot;text&quot; name=&quot;t4&quot; size=&quot;19&quot; maxlength=&quot;30&quot;></td>
</tr>
<tr>
<td width=&quot;16%&quot; valign=&quot;top&quot;>内 容:</td>
<td width=&quot;84%&quot; valign=&quot;middle&quot;>
<textarea rows=&quot;6&quot; name=&quot;t3&quot; cols=&quot;43&quot;></textarea></td>
</tr>
<tr>
<td width=&quot;16%&quot;>所在地区:</td>
<td width=&quot;84%&quot;>
<select name=&quot;d1&quot; size=&quot;1&quot;>

<option value=&quot;北京&quot;>北京</option>
<option value=&quot;上海&quot;>上海</option>
<option value=&quot;天津&quot;>天津</option>
<option value=&quot;重庆&quot;>重庆</option>
<option value=&quot;广东&quot;>广东</option>
<option value=&quot;河北&quot;>河北</option>
<option value=&quot;山西&quot;>山西</option>
<option value=&quot;内蒙&quot;>内蒙</option>
<option value=&quot;辽宁&quot;>辽宁</option>
<option value=&quot;吉林&quot;>吉林</option>
<option value=&quot;黑龙江&quot;>黑龙江</option>
<option value=&quot;江苏&quot;>江苏</option>
<option value=&quot;浙江&quot;>浙江</option>
<option value=&quot;安徽&quot;>安徽</option>
<option value=&quot;福建&quot;>福建</option>
<option value=&quot;江西&quot;>江西</option>
<option value=&quot;山东&quot;>山东</option>
<option value=&quot;河南&quot;>河南</option>
<option value=&quot;湖北&quot;>湖北</option>
<option value=&quot;湖南&quot;>湖南</option>
<option value=&quot;广东&quot;>广东</option>
<option value=&quot;广西&quot;>广西</option>
<option value=&quot;四川&quot;>四川</option>
<option value=&quot;贵州&quot;>贵州</option>
<option value=&quot;云南&quot;>云南</option>
<option value=&quot;西藏&quot;>西藏</option>
<option value=&quot;陕西&quot;>陕西</option>
<option value=&quot;甘肃&quot; selected>甘肃</option>
<option value=&quot;青海&quot;>青海</option>
<option value=&quot;宁夏&quot;>宁夏</option>
<option value=&quot;新疆&quot;>新疆</option>
<option value=&quot;台湾&quot;>台湾</option>
<option value=&quot;香港&quot;>香港</option>
<option value=&quot;国外&quot;>国外</option>
<option value=&quot;其它&quot;>其它</option>
</select> 有效期限:
<select size=&quot;1&quot; name=&quot;d2&quot;>
<option value=&quot;1&quot; selected>1天</option>
<option value=&quot;2&quot;>2天</option>
<option value=&quot;3&quot;>3天</option>
<option value=&quot;4&quot;>4天</option>
<option value=&quot;5&quot;>5天</option>
<option value=&quot;6&quot;>6天</option>
<option value=&quot;7&quot;>1个星期</option>
<option value=&quot;15&quot;>半个月</option>
<option value=&quot;30&quot;>1个月</option>
<option value=&quot;60&quot;>2个月</option>
<option value=&quot;90&quot;>1个季度</option>
<option value=&quot;182&quot;>半年</option>
<option value=&quot;365&quot;>1年</option>
<option value=&quot;99999&quot;>无期</option>
</select></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td width=&quot;16%&quot; align=&quot;center&quot;> </td>
<td width=&quot;84%&quot; align=&quot;center&quot;><input type=&quot;submit&quot; value=&quot;马上发布&quot; name=&quot;B1&quot; style=&quot;background-color: #FFFFE6; font-size: 9pt; border-style: solid; border-color: #000000&quot;>
<input type=&quot;reset&quot; value=&quot;全部重填&quot; name=&quot;B2&quot; style=&quot;background-color: #FFFFE6; font-size: 9pt; border-style: solid; border-color: #000000&quot;>
</td>
</tr>
</table>
</form>
下面的朋友提了不少好的想法,在此谢谢
下面的函数可以自动完成填写text的值,怎么设置option ,radio,checkbox的值。
function TForm1.FillForm(WebBrowser: TWebBrowser; FieldName: string; Value: string): Boolean;
var
i, j: Integer;
FormItem: Variant;
begin
Result := False;
//no form on document
if WebBrowser.OleObject.Document.all.tags('FORM').Length = 0 then
begin
Exit;
end;
//count forms on document
for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do
begin
FormItem := WebBrowser.OleObject.Document.forms.Item(I);
for j := 0 to FormItem.Length - 1 do
begin
try
//when the fieldname is found, try to fill out
if FormItem.Item(j).Name = FieldName then
begin
FormItem.Item(j).Value := Value;
Result := True;
end;
except
Exit;
end;
end;
end;
end;

pailier (2004-02-03 7:38:00)
我也想知道

lybid2002 (2004-02-03 8:13:00)
使用webbrowser,或者如果这个form是固定的,直接发送http请求。

fei_l (2004-02-03 11:05:00)
// 填写
var
HtmlDoc:IHTMLDocument2;
InputText1,InputText2,InputText3,InputText4,InputText5:IHTMLInputTextElement; // Edit框
TypeElement:variant;
I:Integer;
begin
webbrowser1.Navigate(edit1.Text);
exit;
HtmlDoc:=WebBrowser1.Document as IHTMLDocument2;
for i:=0 to HtmlDoc.all.length-1 do
begin
TypeElement:=Htmldoc.all.item(i,varempty);
if Uppercase(TypeElement.tagName)='INPUT' then
begin
if Uppercase(TypeElement.type)='TEXT' then // 填 Edit 框
begin
InputText1:=HtmlDoc.all.item(i,varempty) as IHTMLInputTextElement;
if InputText1.name='username' then InputText1.value:='abc';
InputText4:=HtmlDoc.all.item(i,varempty) as IHTMLInputTextElement;
if InputText4.name='email' then InputText4.value:='xxxx@163.com';
InputText5:=HtmlDoc.all.item(i,varempty) as IHTMLInputTextElement;
if InputText5.name='url' then InputText5.value:='http://www.xxx.com';
end;

if Uppercase(TypeElement.type)='PASSWORD' then // 填密码框
begin
InputText2:=HtmlDoc.all.item(i,varempty) as IHTMLInputTextElement;
if InputText2.name='password' then InputText2.value:='12345678';
InputText3:=HtmlDoc.all.item(i,varempty) as IHTMLInputTextElement;
if InputText3.name='password2' then InputText3.value:='12345678';
end;
end;
end;
end;

// 提交
var
HtmlDoc:IHTMLDocument2;
myitem:Olevariant;
i:integer;
begin
myitem := WebBrowser1.Document;
for i := 0 to myitem.all.length - 1 do
begin
if myitem.all.item(i).tagName = 'INPUT' then
if Uppercase(myitem.all.item(i).type)='SUBMIT' then
if Uppercase(myitem.all.item(i).name)='OK' then
myitem.all.item(i).click;
end;
end;

人在昆明 (2004-02-03 11:37:00)
获取 他 提交的 格式,你自己设置 信息来 提交就可以了

风铃夜思雨 (2004-02-03 11:45:00)
HOHO,没有获得option的,我也一直填不了option这种

bj8888 (2004-02-03 12:03:00)
fei_l:
谢谢!!!!!
请问怎么设置option ,radio,checkbox 里的值
下面的函数可以完成自动填写text的植,但是怎么设置option ,radio,checkbox 里的值。请指教!!!!
function TForm1.FillForm(WebBrowser: TWebBrowser; FieldName: string; Value: string): Boolean;
var
i, j: Integer;
FormItem: Variant;
begin
Result := False;
//no form on document
if WebBrowser.OleObject.Document.all.tags('FORM').Length = 0 then
begin
Exit;
end;
//count forms on document
for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do
begin
FormItem := WebBrowser.OleObject.Document.forms.Item(I);
for j := 0 to FormItem.Length - 1 do
begin
try
//when the fieldname is found, try to fill out
if FormItem.Item(j).Name = FieldName then
begin
FormItem.Item(j).Value := Value;
Result := True;
end;
except
Exit;
end;
end;
end;
end;

fei_l (2004-02-05 2:54:00)
// 已调试通过,请放心使用
// 给我加分吧 :D
var
HtmlDoc:IHTMLDocument2;
myitem:Olevariant;
i:integer;
begin
myitem := WebBrowser1.Document;
for i := 0 to myitem.all.length - 1 do
begin
if myitem.all.item(i).tagName = 'SELECT' then // 下拉框选择
begin
myitem.all.item(i).value:='2'; // 从下拉框中选中第2项
end;

if myitem.all.item(i).tagName = 'INPUT' then
begin
if Uppercase(myitem.all.item(i).type)='RADIO' then
begin
if myitem.all.item(i).value='求' then myitem.all.item(i).checked:=true; // 选中值是 '求'的选项
end;

if Uppercase(myitem.all.item(i).type)='TEXT' then
begin
if Uppercase(myitem.all.item(i).name)='USERNAME' then myitem.all.item(i).value:='abc123';
end;
if Uppercase(myitem.all.item(i).type)='PASSWORD' then
begin
if Uppercase(myitem.all.item(i).name)='PASSWORD' then myitem.all.item(i).value:='12345678';
end;
if Uppercase(myitem.all.item(i).type)='SUBMIT' then
begin
if Uppercase(myitem.all.item(i).name)='OK' then myitem.all.item(i).click; // 点击提交键
end;
end;
end;
end;

sfwany (2004-02-05 9:40:00)
我想问一下那个IHTMLDocument2在哪个系统文件中呀!谢了!

bj8888 (2004-02-05 12:57:00)
fei_l,谢谢,我正在学习中,看明白了你写的代码。让大家都学习学习,过几天给你接分。
请大家都来学习fei_l写的代码。
请继续讨论如何自动实现网站自动注册用户名,及密码。(指第一次注册)。
有没有用INDY控件idhttp的办法

bj8888 (2004-02-05 13:33:00)
fei_l:
您好!在dlphi7运行下面的语句
if Uppercase(myitem.all.item(i).name)='OK' then myitem.all.item(i).click;
报错:Project Pxx.exe raised execption class EoleError with message 'Method' type' not supported by automation object'
不知为什么?

ivw (2004-02-05 15:33:00)
用过个行不行啊,Tidhttp.我没有试过,请问哪位大上侠试过。
它也有一个POST方法。

fei_l (2004-02-06 17:55:00)
留个e-mail,我发给你

bj8888 (2004-02-06 18:01:00)
fei_l,
你好,我的电子邮件是:hjzaaa@sohu.com

fei_l (2004-02-08 13:09:00)
已发

WoDing (2004-02-09 22:13:00)
fei_l,
给我一份
wodings@yahoo.com.cn

bj8888 (2004-02-10 18:11:00)
fei_l,
您好!
怎么没有收到,请再发一下,hjzaaa@sohu.com

bj8888 (2004-02-12 11:37:14)
接受答案了.

lcmax (2004-02-23 12:54:31)
fei_l,能发给我一份吗?
先谢谢了
lcmax@163.com

wang_80919 (2004-03-07 8:53:59)
fei_l,
给我一份
flying_919@eyou.com
谢谢


fei_l的回答最终被接受。
 
solo_1978,可以再指教一下吗?
 
算了,就这样了,不想等了。
 
多人接受答案了。
 

Similar threads

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