gpt4 book ai didi

delphi - INDY-我真的需要 cookies 吗?

转载 作者:行者123 更新时间:2023-12-03 18:30:46 25 4
gpt4 key购买 nike

我正在开发一个项目以在路由器管理页面中自动登录...但是它在源代码中使用cookie。当我使用网络浏览器(Chrome)进行GET时,得到以下信息:

GET http://192.168.1.1/ HTTP/1.1
Host: 192.168.1.1
Proxy-Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: FirstMenu=Admin_0; SecondMenu=Admin_0_0; ThirdMenu=Admin_0_0_0; Language=en


当我使用Indy进行GET时,结果是:

GET http://192.168.1.1/ HTTP/1.1
Host: 192.168.1.1
Accept: text/html, */*
Accept-Encoding: identity
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV2)


好的,我想以与HTML表单相同的方式通过url登录POST,并传递相同的参数,但是结果,我得到一个页面,说“未知错误” ...
这是我在Chrome浏览器中进行POST时的情况:

POST http://192.168.1.1/index/login.cgi HTTP/1.1
Host: 192.168.1.1
Proxy-Connection: keep-alive
Content-Length: 34
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Origin: http://192.168.1.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://192.168.1.1/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: SessionID_R3=479900075; FirstMenu=Admin_0; SecondMenu=Admin_0_0; ThirdMenu=Admin_0_0_0; Language=en

Username=admin&Password=YWRtaW4%3D


这是我与Indy合作的项目中的帖子:

POST http://192.168.1.1/index/login.cgi HTTP/1.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 36
Proxy-Connection: keep-alive
Host: 192.168.1.1
Accept: text/html, */*
Accept-Encoding: identity
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV2)

Username=admin&Password=YWRtaW4%3D


好的,我几乎可以确定由于Cookie会收到“未知错误”。但是这里真的需要它们吗?以及我将如何设置它们?我尝试过使用cookie管理器,但没有成功,而且我在Delphi 2010中,不知道Indy的Cookies管理器在此版本中是否能正常工作。这是我的项目的代码:

 http := TIDHttp.Create(nil);
PostData:= TStringList.Create;
AnswerData:= TStringStream.Create('');
http.ReadTimeout := 5000;
http.Request.UserAgent:='Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV2)';
http.ProxyParams.ProxyServer:= '127.0.0.1';
http.ProxyParams.ProxyPort:= 8080;
PostData.Text:= 'Username=admin&Password=YWRtaW4=';
try
http.Post('http://192.168.1.1/index/login.cgi', PostData, AnswerData);
except
on E: EIdHTTPProtocolException do
begin
HttpCode:= HTTP.ResponseCode;
HttpHeader:= HTTP.Response.RawHeaders.Values['Server'];
end;
end;
Memo1.Lines.Add(AnswerData.DataString);
end;

最佳答案

Web浏览器的请求包括您显然尚未收到的先前收到的Cookie。您需要从与Web浏览器相同的起始页面开始,以接收Cookie。另外,由于要发送多个请求,因此需要确保每次都重复使用相同的TIdCookieManager实例,以使cookie在请求之间保持不变。如果未将TIdCookieManager分配给TIdHTTP.CookieManager属性,则TIdHTTP在内部创建一个TIdHTTP,因此您要么需要为每个请求重用相同的TIdHTTP,要么需要创建一个TIdCookieManager并分配给创建的每个TIdHTTP 。

关于delphi - INDY-我真的需要 cookies 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17505740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com