none
웹에서 쿠키 가져오고 싶습니다. RRS feed

  • 질문

  • 안녕하세요.

     

    제가 어떤 사이트에서 그 페이지의 HTML 파일을 받아오려고 했습니다.

     

    WebClient를 이용해서요.

     

    그런데 계속 그 페이지 HTML 파일이 아닌 메인 페이지의 HTML 파일이 다운로드 받아 지더라구요.

     

    Fiddler을 가지고 여러가지 시도를 하다가

    그 페이지에서 DCID_SESSID=99kebueqhuqj1l95nnj1sufcc7와 같은 형식의 쿠키를 발견했습니다.

    오른쪽 상단 부분에 검정색 네모 친 부분입니다.

     

     

    그래서

    WebClient clt = new WebClient();

    clt.Headers["Cookie"] = "DCID_SESSID=99kebueqhuqj1l95nnj1sufcc7";

    과 같이 넣은 후 다운로드를 하니 정상적으로 다운로드가 되더군요.

     

     

    그런데 오늘 해보니 또 되지 않네요.

    아마도 위의 쿠키 값(DCID_SESSID=99kebueqhuqj1l95nnj1sufcc7)이 계속 변하나 봅니다.

     

     

    그래서 결국 저 쿠키 값을 C#을 이용해서 다운로드 받을 때마다 받고 싶은데, 방법이 없는지 궁금합니다.

    2011년 11월 17일 목요일 오후 12:29

답변

  • Fiddler를 사용하셨으면 그 부분도 해결을 쉽게 보실 수 있을 것 같은데요. ^^

    쿠키의 이름에서 DCID_SESSID 로 되어 있는 것으로 웹에서의 전형적인 Session ID 가 쿠키로 나오는 것이 맞는 것 같고, 그렇다면 그 쿠키가 설정되는 페이지가 있을 것입니다. 바로 그 페이지를 C# 에서 먼저 불러주면, 쿠키가 내려올 것이고 이후의 요청에서 그 쿠키값을 재사용하시면 됩니다.

    Fiddler를 이용해서 그 웹 사이트를 방문하면, 어떤 페이지에서 그 쿠키가 설정되는지 쉽게 확인할 수 있을 것입니다.

     

    • 답변으로 표시됨 KimJin2 2011년 11월 19일 토요일 오전 8:51
    2011년 11월 17일 목요일 오후 3:43
  • 안녕하십니까? KimJin2

    Microsoft MSDN Forum 사이트를 방문해 주셔서 감사합니다.

    문의 하신 웹에서 쿠키 가져오고 싶습니다에 대한 답변을 드리겠습니다.

     

    디자인 모드에서 폼에 Web Brower 컨트롤을 사용하지 않고 Code  behind에서 WebBrower 인스턴스를 임의로 생성 후 이용하시는 것을 추천합니다.

     

    이 외에 아래 자료를 참조해서 PowerShell 을 이용해 간단하게 쿠키 정보를 얻을 수 있습니다.

    Internet Explorer Com객체를 생성 후 해당 페이지 이동 후
    $webBrowser.Document.Cookie
    를 이용해서 쿠키정보를 확인할 수 있습니다.

     

    참고 자료

     

    웹페이지 로그인 스크립트

    http://social.technet.microsoft.com/Forums/ko/windowsserverko/thread/f0e3f190-a317-4945-8d0b-340208bc3bb4

     

    제가 문제에 대해 더 알아야 할 것이 있다면 응답 주시면 감사하겠습니다.

    제시해 드린 답변이 도움이 되었기를 바랍니다.

    • 답변으로 표시됨 KimJin2 2011년 11월 19일 토요일 오전 8:52
    2011년 11월 18일 금요일 오전 9:12
    중재자

모든 응답

  • Fiddler를 사용하셨으면 그 부분도 해결을 쉽게 보실 수 있을 것 같은데요. ^^

    쿠키의 이름에서 DCID_SESSID 로 되어 있는 것으로 웹에서의 전형적인 Session ID 가 쿠키로 나오는 것이 맞는 것 같고, 그렇다면 그 쿠키가 설정되는 페이지가 있을 것입니다. 바로 그 페이지를 C# 에서 먼저 불러주면, 쿠키가 내려올 것이고 이후의 요청에서 그 쿠키값을 재사용하시면 됩니다.

    Fiddler를 이용해서 그 웹 사이트를 방문하면, 어떤 페이지에서 그 쿠키가 설정되는지 쉽게 확인할 수 있을 것입니다.

     

    • 답변으로 표시됨 KimJin2 2011년 11월 19일 토요일 오전 8:51
    2011년 11월 17일 목요일 오후 3:43
  • 안녕하십니까? KimJin2

    Microsoft MSDN Forum 사이트를 방문해 주셔서 감사합니다.

     

    문의 하신 웹에서 쿠키 가져오고 싶습니다에 대한 답변은 SeongTae Jeong님이 잘 대답해 주셨습니다.

    2011년 11월 18일 금요일 오전 12:23
    중재자
  • 답변 감사합니다.

     

    정말 여러가지 시도를 해 본결과 웹 브라우저에서 그 페이지를 연 다음

     

    webBrowser1.Document.Cookie.ToString() 으로 하면 그 페이지의 쿠키가 나오는 걸 알았습니다. <- 제가 원하는게 맞더군요.

     

    그런데 저는 HttpWebRequest같은걸로 그 페이지를 직접 열지 않고 쿠키를 받아오고 싶습니다. 방법이 없을까요?

     

    계속 해보니 webbrowser로 열었을 때는 fiddler의 Request Headers에 쿠키가 보여지는데,

    이렇게요

    Request sent 178 bytes of Cookie data:

    __utma=16186532.368997936.1321435546.1321595781.1321598763.5; __utmz=16186532.1321435546.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); DCID_SESSID=odcb44ub5t8lu18pq5vu55hld5

     

     HttpWebRequest로 같은 주소를 열었을 때는

    This request did not send any cookie data.

     

    라고 나오네요.

    2011년 11월 18일 금요일 오전 7:35
  • 안녕하십니까? KimJin2

    Microsoft MSDN Forum 사이트를 방문해 주셔서 감사합니다.

    문의 하신 웹에서 쿠키 가져오고 싶습니다에 대한 답변을 드리겠습니다.

     

    디자인 모드에서 폼에 Web Brower 컨트롤을 사용하지 않고 Code  behind에서 WebBrower 인스턴스를 임의로 생성 후 이용하시는 것을 추천합니다.

     

    이 외에 아래 자료를 참조해서 PowerShell 을 이용해 간단하게 쿠키 정보를 얻을 수 있습니다.

    Internet Explorer Com객체를 생성 후 해당 페이지 이동 후
    $webBrowser.Document.Cookie
    를 이용해서 쿠키정보를 확인할 수 있습니다.

     

    참고 자료

     

    웹페이지 로그인 스크립트

    http://social.technet.microsoft.com/Forums/ko/windowsserverko/thread/f0e3f190-a317-4945-8d0b-340208bc3bb4

     

    제가 문제에 대해 더 알아야 할 것이 있다면 응답 주시면 감사하겠습니다.

    제시해 드린 답변이 도움이 되었기를 바랍니다.

    • 답변으로 표시됨 KimJin2 2011년 11월 19일 토요일 오전 8:52
    2011년 11월 18일 금요일 오전 9:12
    중재자