怎样用 IdHttp 登录网站?

LngDotin 2014-01-27 01:33:17
为管理网站的方便,想使用 IdHTTP 登录网站,抓包数据如下:

POST /login.asp?action=login_chk
HTTP/1.1
Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword,*/*
Referer: http://www.celiang.net/
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; MyIE9)
Host: www.celiang.net
Content-Length: 65
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: ASPSESSIONIDASBCDQAB=EKFALHMCGBNFHICIPAOFOJHB
re_log=yes
&username=用户名
&password=密码
&memery_info=yes

查阅了网上的一些资料,结果试验后都不成功,非常郁闷!
要登录的网站是这个:http://www.celiang.net/login.asp

下面是自己的代码:
IdHTTP1->Request->Accept = "image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword,*/*";
IdHTTP1->Request->Referer = "http://www.celiang.net/";
IdHTTP1->Request->AcceptLanguage = "zh-cn";
IdHTTP1->Request->ContentType = "application/x-www-form-urlencoded";
IdHTTP1->Request->AcceptEncoding = "gzip, deflate";
IdHTTP1->Request->UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; MyIE9)";
IdHTTP1->Request->Host = "www.celiang.net";
IdHTTP1->Request->ContentLength = 65;
IdHTTP1->Request->Connection = "Keep-Alive";
IdHTTP1->Request->CacheControl = "no-cache";
//IdHTTP1->Request->

TStringStream *Param = new TStringStream(NULL);
TStringStream *RStream = new TStringStream(NULL);

Param->WriteString("re_log=yes");
Param->WriteString("&username=用户名");
Param->WriteString("&password=密码");
Param->WriteString("&memery_info=yes");

IdHTTP1->Post("http://www.celiang.net/login.asp", Param, RStream);
Memo1->Text = RStream->DataString;

为什么不行呢?请高手指点!
...全文
563 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
dlx_gd727 2014-05-04
  • 打赏
  • 举报
回复
只用idhttp抓过网页代码,抓包交互太麻烦了
LngDotin 2014-01-28
  • 打赏
  • 举报
回复
引用 8 楼 sololie 的回复:
你不是说不能确定是否登录成功么,所以我就让你假设自己登录成功了,做一些登录后才能做的操作,如果能操作就证明成功了,否则就是登录失败了。 你登录不就是想干点啥么,难不成就是为了登录而登录。 你用idhttp post完之后,再继续做一些修改资料或什么的其他操作,如果可以操作就证明登录成功了,俺这么多废话不知汝看明白没有。。。。
老大,你怎么不明白我的意思呢? 我是想登录,但那些代码就是登录不成功,代码能正常执行,拦截不出错误,但就是登录不成功,无法执行后续的管理操作,主持看看,网站是 http://www.celiang.net/login.asp ,你可以自己注册一个用户名,然后试一下,用什么语言编程都行,请试试。
LngDotin 2014-01-28
  • 打赏
  • 举报
回复
引用 11 楼 LinuxCard 的回复:
抓包看看你发出的包和浏览器登陆发出的包有什么区别不就行了吗?
抓包抓出来,果然不一样。   浏览器发出的包是:HTTP/1.1 ,自己程序发出的是 HTTP/1.0 ,我再仔细看看,有无其他问题,最后再总结一下贴出来。
LngDotin 2014-01-28
  • 打赏
  • 举报
回复
嗯,我抓包试试,找找原因。
sololie 2014-01-28
  • 打赏
  • 举报
回复
如果证明是登录成功了,就没啥好说了,如果证明登录是失败的,再做其他讨论,先确定自己是否登录成功先。
sololie 2014-01-28
  • 打赏
  • 举报
回复
你不是说不能确定是否登录成功么,所以我就让你假设自己登录成功了,做一些登录后才能做的操作,如果能操作就证明成功了,否则就是登录失败了。 你登录不就是想干点啥么,难不成就是为了登录而登录。 你用idhttp post完之后,再继续做一些修改资料或什么的其他操作,如果可以操作就证明登录成功了,俺这么多废话不知汝看明白没有。。。。
LngDotin 2014-01-28
  • 打赏
  • 举报
回复
引用 6 楼 sololie 的回复:
你就当登录成功了,再进一步操作啊,如果真的成功了那就能进行其他操作了
关键的问题是:当登录成功,当不成啊~~~
LinuxCard 2014-01-28
  • 打赏
  • 举报
回复
抓包看看你发出的包和浏览器登陆发出的包有什么区别不就行了吗?
sololie 2014-01-27
  • 打赏
  • 举报
回复
你就当登录成功了,再进一步操作啊,如果真的成功了那就能进行其他操作了
LngDotin 2014-01-27
  • 打赏
  • 举报
回复
引用 4 楼 sololie 的回复:
加个try 如果是socket的错误会catch到错误码提示,如果成功发送http请求后,会返回请求结果,例如发送登录请求,登录成功就会返回一个相关登录成功的提示(就是登录成功后跳转到的页面),如果登录失败会返回例如账号和密码错误之类的信息,总之你得先确定范围。
try { } catch(...) { } 没拦截到,看样子是提交成功了,但就是看不到登录的信息。
sololie 2014-01-27
  • 打赏
  • 举报
回复
加个try 如果是socket的错误会catch到错误码提示,如果成功发送http请求后,会返回请求结果,例如发送登录请求,登录成功就会返回一个相关登录成功的提示(就是登录成功后跳转到的页面),如果登录失败会返回例如账号和密码错误之类的信息,总之你得先确定范围。
sololie 2014-01-27
  • 打赏
  • 举报
回复
不看返回结果如何判断登录失败的原因
LngDotin 2014-01-27
  • 打赏
  • 举报
回复
引用 1 楼 sololie 的回复:
RStream->DataString; 是什么
是想看看登录后返回了什么。
sololie 2014-01-27
  • 打赏
  • 举报
回复
RStream->DataString; 是什么

1,316

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧