2011-05-16 5 views
2

Facebook에 로그인하고 쿠키를 캡처하는 C# 코드의 테스트 스 니펫을 작성하고 있습니다. 저는 교육 목적으로 만하고 있습니다. 필자는 제 작품과 제 3 자 사이에서 양식 업로드, 다운로드 및 양식 제출을 자동화하는 작업을 받았으며 그 작업을 올바르게 수행해야하는 작업 중 하나입니다. 처음으로 올바르게 가져와야합니다. 그래서 나는 왜 내가 페이스 북과 다른 웹 서비스로 약간의 연습을 할 것이라고 생각했다.C# 웹 서버에 저장된 쿠키가 없습니다.

나는이 : 나는 중단 점 1에서 result을 선택하면, 나는 결과 페이지에서 페이스 북의 로그에 대한 HTML 코드를 포함 볼 수 있습니다

string postMessage = "user=" + username + "&pass=" + password; 
CookieContainer cookieJar = new CookieContainer(); 
MessageBox.Show(cookieJar.Count + " cookies"); // 0 cookies, as expected. 

HttpWebRequest wReq 
= (HttpWebRequest)HttpWebRequest.Create("https://www.facebook.com/login.php"); 
wReq.Proxy    = HttpWebRequest.GetSystemWebProxy(); 
wReq.Proxy.Credentials = CredentialCache.DefaultCredentials; 
wReq.UserAgent 
    = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 " 
    + "(KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.24"; 
wReq.CookieContainer = cookieJar; 
wReq.Method   = "POST"; 
wReq.ContentLength  = postMessage.Length; 
wReq.ContentType  = "application/x-www-form-urlencoded"; 

StreamWriter sw = null; 

try 
{ 
    sw = new StreamWriter(wReq.GetRequestStream()); 
    sw.Write(postMessage); 
} 
catch 
{ 
    return false; 
} 
finally 
{ 
    sw.Close(); 
} 

string result = string.Empty; 

HttpWebResponse wResp = (HttpWebResponse)wReq.GetResponse(); 
using (StreamReader sr = new StreamReader(wResp.GetResponseStream())) 
{ 
    result = sr.ReadToEnd(); 
    sr.Close(); // BREAKPOINT 1 
} 

MessageBox.Show(cookieJar.Count + " cookies"); // 6 cookies. 

wReq 
    = (HttpWebRequest)HttpWebRequest.Create("http://www.facebook.com/home.php"); 
wReq.Proxy = HttpWebRequest.GetSystemWebProxy(); 
wReq.Proxy.Credentials = CredentialCache.DefaultCredentials; 
wReq.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 " 
    + "(KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.24"; 
wReq.CookieContainer = cookieJar; 

result = string.Empty; 

wResp = (HttpWebResponse)wReq.GetResponse(); 
using (StreamReader sr = new StreamReader(wResp.GetResponseStream())) 
{ 
    result = sr.ReadToEnd(); 
    sr.Close(); // BREAKPOINT 2 
} 

. 내 cookiaJar에서 6 개의 쿠키를 캡처 했는데도 내 브라우저에서 쿠키가 활성화되어 있지 않다는 메시지가 표시됩니다.

마찬가지로, 중단 점 2에서 result을 확인하면 "이 페이지를 보려면 로그인해야합니다."라는 html 코드를 볼 수 있습니다.

이제 페이 스북 (Facebook)이 JavaScript없이 작동하며, 쿠키 12 개를 캡처하고 있습니다. cookieJar. 왜 이것이 작동하지 않는지 조금 혼란 스럽습니까?

(어쨌든 내 암호는 대문자, 소문자, 숫자 및 기호를 사용합니다. URLEncode()으로 인코딩해야합니까? 암호를 인코딩하지 않은 일반 텍스트 암호를 사용하여 다른 웹 사이트에 성공적으로 로그인했습니다.)

답변

1

로그인을 위해 https에서 읽음으로 http로 전환합니다. https를 사용하도록 두 번째 읽기를 변경하고 도움이되는지 확인하십시오.

관련 문제