0

CookieAwareClient (코드 : C# WebClient Log onto Website)를 사용하여 사이트에 로그인하려고합니다. 웹 브라우저를 사용하여 사이트에 로그인하면 약 10 개의 쿠키가 생깁니다. JavaScript를 비활성화하고 로그인하려고하면 5 (activeTab, id, mcim, PHPSESSID, username)가 표시됩니다. 하지만 CookieAwareClient를 사용하여 로그인하려고하면 저장되는 유일한 쿠키는 PHPSESSID입니다.cookiecontainer 및 webclient/httpwebrequest를 사용하여 일부 쿠키가 저장되지 않는 경우

다른 쿠키가 저장되지 않는 이유는 무엇일까요? 나는 WebClient가 JavaScript를 실행하지 않지만 JavaScript가 비활성화되었을 때 생성되는 3 개의 다른 쿠키가 보존되지 않는다는 것을 알고 있습니다.

답변

2

먼저, 브라우저에서 스크립트를 끄고 로그인을 시도하기 전에 먼저 쿠키를 삭제 했습니까? 그렇지 않은 경우 쿠키를 지우고 다시 시도하십시오.

쿠키를 먼저 지우고 스크립트가없는 로그인 후에도 5 개의 새로운 쿠키가있는 것으로 가정하면 누락 된 쿠키 이름을보고 CookieAwareClient가 실제로 사용자에 로그인하지 못했을 것입니다. "username"쿠키가 없으면 로그인이 성공하지 못한다면 내가 기대하는 바입니다. 로그인 요청에 의해 반환 된 HTML을 보면 로그인에 성공한 것 같습니까? 아니면 어떤 종류의 오류가 반환됩니까?

반환 된 HTML이 로그인에 성공했다면 브라우저에서 실행 중이지만 코드에 의해 실행되지 않은 추가 요청 일 가능성이 있습니다. 예를 들어, 로그인 페이지는 쿠키를 설정하는 다른 페이지로 리디렉션되는 META REFRESH를 가질 수 있습니다. 또는 로그인 페이지에 IFRAME, IMG, SCRIPT 등이 포함될 수 있으며, 차례로 쿠키가 설정됩니다. 이를 진단하려면 Fiddler, Firebug 또는 기타 유사한 도구를 사용하여 브라우저가 로그인 프로세스의 일부로 특정 HTTP 요청을 실행하는지 확인하십시오. 로그인 페이지의 POST가 모든 쿠키 설정을 수행하고 있는지 확인하십시오. 그렇지 않으면 초기 로그인 후에 코드에 추가 요청을 추가해야합니다.

쿠키를 설정하는 HTTP 요청이 하나 뿐인 경우 문제는 코드가 서버로 보내거나 보내지 않는 HTTP 헤더 또는 POST 데이터가되는 것입니다. 브라우저가 다른 헤더 또는 POST 데이터를 보내는 것 같습니다. 이를 진단하려면 파이어 버그 (Firebug), 피 들러 (Fiddler) 또는 이와 유사한 도구가 브라우저가 전송하는 HTTP 헤더와 POST 데이터와 코드가 전송하는 데이터를 비교해야합니다.

이러한 제안 사항 중 어느 것도 작동하지 않는 경우 의견을 게시하면 되풀이 할 수 있습니다.

관련 문제