से वेबसाइट पर प्रमाणीकरण में समस्याएं मैं कोड लिखने की कोशिश कर रहा हूं जो वेबसाइट wallbase.cc को प्रमाणित करेगा। मैं क्या यह Firfebug/Chrome डेवलपर टूल का उपयोग करता है पर देखा है और वह काफी आसान लगता है:कोड
पोस्ट "usrname = $ उपयोगकर्ता & पास = $ पास & nopass_email = प्रकार + में + अपने + ई-मेल + और + प्रेस + & nopass = 0 "वेबपृष्ठ पर" http://wallbase.cc/user/login "दर्ज करें, लौटाई गई कुकीज़ संग्रहीत करें और भविष्य के सभी अनुरोधों पर उनका उपयोग करें।
private CookieContainer _cookies = new CookieContainer();
//......
HttpPost("http://wallbase.cc/user/login", string.Format("usrname={0}&pass={1}&nopass_email=Type+in+your+e-mail+and+press+enter&nopass=0", Username, assword));
//......
private string HttpPost(string url, string parameters)
{
try
{
System.Net.WebRequest req = System.Net.WebRequest.Create(url);
//Add these, as we're doing a POST
req.ContentType = "application/x-www-form-urlencoded";
req.Method = "POST";
((HttpWebRequest)req).Referer = "http://wallbase.cc/home/";
((HttpWebRequest)req).CookieContainer = _cookies;
//We need to count how many bytes we're sending. Post'ed Faked Forms should be name=value&
byte[] bytes = System.Text.Encoding.ASCII.GetBytes(parameters);
req.ContentLength = bytes.Length;
System.IO.Stream os = req.GetRequestStream();
os.Write(bytes, 0, bytes.Length); //Push it out there
os.Close();
//get response
using (System.Net.WebResponse resp = req.GetResponse())
{
if (resp == null) return null;
using (Stream st = resp.GetResponseStream())
{
System.IO.StreamReader sr = new System.IO.StreamReader(st);
return sr.ReadToEnd().Trim();
}
}
}
catch (Exception)
{
return null;
}
}
अपना लॉगिन मानकों के साथ HttpPost कॉल करने के बाद मैं भविष्य में इस एक ही विधि का उपयोग कर कॉल प्रमाणीकृत किया की उम्मीद करेंगे (एक वैध उपयोगकर्ता नाम/पासवर्ड कल्पना करते हुए):
यहाँ मेरी कोड है। मुझे अपने कुकी संग्रह में एक सत्र कुकी मिलती है लेकिन किसी कारण से मुझे प्रमाणित नहीं किया जाता है। मुझे अपने कुकी संग्रह में एक सत्र कुकी मिलती है, भले ही मैं किस पृष्ठ पर जाता हूं, इसलिए मैंने शुरुआती सत्र कुकी प्राप्त करने के लिए पहले होम पेज लोड करने का प्रयास किया और फिर लॉग इन किया लेकिन इसमें कोई बदलाव नहीं आया। https://github.com/sevensins/Wallbase-Downloader/blob/master/wallbase.sh (लाइन 336)
कैसे काम कर प्रमाणीकरण प्राप्त करने के लिए पर कोई भी विचार:
मेरी जानकारी के लिए इस अजगर संस्करण में काम करता है?
अद्यतन # 1
जब एक सही उपयोगकर्ता/पासवर्ड युग्म प्रतिक्रिया स्वचालित रूप से रेफरर पर रीडायरेक्ट लेकिन एक गलत उपयोगकर्ता/पास जोड़ी प्राप्त होता है जब यह रीडायरेक्ट नहीं करता है और एक बुरा उपयोगकर्ता/पास जोड़ी देता है का उपयोग कर। इस पर आधारित ऐसा लगता है कि प्रमाणीकरण हो रहा है, लेकिन शायद जानकारी के सभी महत्वपूर्ण टुकड़े सहेजे नहीं जा रहे हैं ??
अद्यतन # 2
मैं .NET 3.5 उपयोग कर रहा हूँ। जब मैंने उपरोक्त कोड को .NET 4 में कोशिश की, System.Net.ServicePointManager.Expect100Continue = false
(जो मेरे कोड में था, बस यहां नहीं दिखाया गया) की अतिरिक्त पंक्ति के साथ यह काम करता है, कोई बदलाव आवश्यक नहीं है। समस्या कुछ पूर्व- नेट 4 मुद्दे से सीधे लगती है।
आपको यह सुनिश्चित करने की ज़रूरत है कि आप 'प्रतिक्रिया' को बंद/निपटान करें - या इसे '() 'ब्लॉक में डाल दें। क्या आप बाद के अनुरोधों पर एक ही कुकी कंटेनर का पुन: उपयोग कर रहे हैं? – debracey
@debracey: मैं एक ही कुकी कंटेनर का उपयोग कर रहा हूं, कुकी कंटेनर एक वर्ग स्तर का निजी चर है जिसे प्रत्येक एचटीपीपोस्ट के लिए पुन: उपयोग किया जाता है। मैंने ब्लॉकों का उपयोग करने के लिए अपने कोड को ट्वीक किया और मेरे प्रश्न में कोड अपडेट किया, कोई बदलाव नहीं। – Peter