2013-02-12 2 views
1

indi를 사용하여 파일을 다운로드하려고하지만 (asp로 엑셀 응답 저장) 오류가 발생하여 wireshark를 사용하여 요청에 쿠키가 없습니다.TWebBrowser에서 쿠키 가져 오기

Twebbrowser 창에서 쿠키를 가져 와서 저장하려고합니다.

procedure TForm1.WebBrowser1DownloadComplete(Sender: TObject); 
var 
document: IHTMLDocument2; 
cookies:tstringlist; 
begin 
cookies:=tstringlist.Create; 
document := WebBrowser1.Document as IHTMLDocument2; 
cookies.Add(document.cookie); 
//do stuff with them 
end; 

반환 값 없음, 무슨 쿠키를 추출 (또는 2) twebbrowser 중, 또는 가장 좋은 방법은 뭔가 더 나은 내가 부족 있나요?

답변

1

자바 스크립트 및 document.cookie 속성을 사용하는 멀웨어 (ab)의 기록 때문에 웹 서버는 HTTP 수준에서만 쿠키가 HTTP를 통해 반환되고 JavaScript를 통해 사용할 수 없도록 요청할 수 있습니다.

https://www.owasp.org/index.php/HTTPOnly

나는이 인스턴스의 경우 모르겠어요,하지만 당신은 당신이 파일을 가져 인디 사용 언급. 웹 브라우저에서 데이터를 직접 WebBrowser1에 저장하면 HTTP 트랜잭션의 속성이기 때문에 쿠키 데이터가 함께 복사되지 않습니다. 쿠키에 대한 인디 문서를 참조하십시오 :

http://www.indyproject.org/docsite/html/TIdHTTP_CookieManager.html

3

TWebBrowser 자체가 WinInet을 주위에 래퍼 인터넷 익스플로러, 주위의 래퍼입니다. Indy는 IE/WinInet과 쿠키를 공유하지 않으므로 인디의 TIdCookieManager 구성 요소에 쿠키 세부 정보를 수동으로 복사해야합니다. 그러나 IHTMLDocument2.cookie 속성은 쿠키의 원본 URL 및 대상 도메인/경로와 같이 Indy의 사용에 충분한 정보가 포함되지 않은 name=value 쌍의 구분 된 문자열 (보안 제한으로 인해 아무 것도 반환하지 않는 경우)입니다. Windows의 Cookies 폴더에 저장된 IE의 쿠키 파일을 구문 분석하는 등의 다른 곳에서 정보를 가져와야합니다.

+0

다음은'wininet.dll'을 로딩하고'HTMLOnly' 쿠키를 검색하는'InternetGetCookieExA' 메소드를 호출하는 코드를 발견 한 URL입니다. (http://portal.clevercomponents.com/KB/a74/copy-twebbrowser-cookies-to-tclhttp.aspx) –

관련 문제