दिलचस्प पोस्ट
मैं iOS ऐप पर कस्टम कुंजीपटल से कीस्ट्रोक्स कैसे प्राप्त करूं? चयनित कॉलमों के लिए तालिका में एनए वैल्यू कैसे बदल सकता है? data.frame, data.table जांचें कि UITextField के लिए इनपुट केवल संख्यात्मक है जब किसी फ़ंक्शन पर पास किया जाता है तो सी-अर्रे का गलत आकार () मान क्यों है? विंडोज और लिनक्स के लिए उसी मशीन पर कुर्सियां कार्य का उपयोग कब किया जाए। देरी, थ्रेड का उपयोग कब किया जा रहा है। स्विफ्ट: दो एनएसडीट () के बीच की सभी तारीखें प्रिंट करें एएसपी.नेट अनुप्रयोग स्टेट बनाम एक स्टेटिक ऑब्जेक्ट अप करने के लिए फोन नंबर कैसे करें? लॉगिंग, स्ट्रीमहाण्डलर और मानक स्ट्रीम Window.location.assign () और window.location.replace () के बीच का अंतर लिनक्स कर्नल कोड में __इनिट का क्या मतलब है? छोटे वैक्टर के तत्वों को दोहराए बिना अलग-अलग लंबाई वाले वैक्टर को कैसे छेदना है? PyQt: एक पृष्ठभूमि ऑपरेशन शुरू करने के लिए एक स्लॉट में एक संकेत कनेक्ट क्या किसी वेब प्रोजेक्ट की तरह ही विंडोज़ प्रोजेक्ट में Gecko या Webkit एम्बेड करना संभव है?

वेबसाइट और प्रवेश डेटा में लॉगिन करने के लिए वेबमेल या वेबआरिएंस्ट का उपयोग करना

मैं WebClient / WebRequest का उपयोग कर किसी वेबसाइट पर प्रतिबंधित डेटा तक पहुंचने का प्रयास कर रहा हूं उस वेबसाइट पर कोई आधिकारिक एपीआई नहीं है, इसलिए मैं क्या करने की कोशिश कर रहा हूं, बस एचटीएमएल फार्म भरें और सर्वर पर मान पोस्ट करें, इसलिए मैं लॉग इन हूं।

मैंने यह और यह कोशिश की, लेकिन ऐसा नहीं लगता कि आने वाले अनुरोध लॉग इन हैं।

बाद के उदाहरण अधिक आकर्षक हैं क्योंकि मैं स्पष्ट रूप से WebClient पसंद करता हूं, लेकिन विरासत WebRequest करेंगे।

वैसे भी, पहले उदाहरण में मुझे लगता है कि यह लॉगिन था, लेकिन आगामी अनुरोध जो निजी डेटा का उपयोग करते हैं, एक संदेश के साथ एक पृष्ठ "यह सदस्य केवल सामग्री है" वापस आती है।

WebClient स्थायी रूप से लॉग इन कैसे करें?

Solutions Collecting From Web of "वेबसाइट और प्रवेश डेटा में लॉगिन करने के लिए वेबमेल या वेबआरिएंस्ट का उपयोग करना"

यह है कि मैंने क्या किया और यह काम करता है ( क्रेडिट )।

इस वर्ग को पहले जोड़ें:

 namespace System.Net { using System.Collections.Specialized; using System.Linq; using System.Text; public class CookieAwareWebClient : WebClient { public void Login(string loginPageAddress, NameValueCollection loginData) { CookieContainer container; var request = (HttpWebRequest)WebRequest.Create(loginPageAddress); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; var query = string.Join("&", loginData.Cast<string>().Select(key => $"{key}={loginData[key]}")); var buffer = Encoding.ASCII.GetBytes(query); request.ContentLength = buffer.Length; var requestStream = request.GetRequestStream(); requestStream.Write(buffer, 0, buffer.Length); requestStream.Close(); container = request.CookieContainer = new CookieContainer(); var response = request.GetResponse(); response.Close(); CookieContainer = container; } public CookieAwareWebClient(CookieContainer container) { CookieContainer = container; } public CookieAwareWebClient() : this(new CookieContainer()) { } public CookieContainer CookieContainer { get; private set; } protected override WebRequest GetWebRequest(Uri address) { var request = (HttpWebRequest)base.GetWebRequest(address); request.CookieContainer = CookieContainer; return request; } } } 

उपयोग:

 public static void Main() { var loginAddress = "www.mywebsite.com/login"; var loginData = new NameValueCollection { { "username", "shimmy" }, { "password", "mypassword" } }; var client = new CookieAwareWebClient(); client.Login(loginAddress, loginData); } 

HTTP स्टेटलेस है इसलिए, आप WebClient को स्थायी रूप से लॉग इन नहीं कर सकते। एक सत्र की अवधारणा HTTP में मौजूद नहीं है सर्वर-साइड प्रौद्योगिकियों जैसे कि एएसपी.एन.ई. कुकी या एक क्वेरी स्ट्रिंग पैरामीटर का उपयोग करते हुए सत्र की अवधारणा के माध्यम से एक राज्यपूर्ण व्यवहार अनुकरण करती है जो हर अनुरोध में आगे और पीछे भेजती है। यह कहने के बाद, WebClient से एक ब्राउज़र क्या करता है, इसका अनुकरण करना संभव है। यदि आपके पास वेबसाइट तक पहुंच है, तो सही क्रेडेंशियल का उपयोग करके इसे कनेक्ट करें और फ़ेडरलर का उपयोग करके ट्रैफ़िक को कैप्चर करें। इसके बाद, सुनिश्चित करें कि वेबक्लंट ब्राउज़र के समान सही कुकीज़, अनुरोध हेडर, क्वेरी स्ट्रिंग, आदि को भेजता है।