18-11-13, 04:10 AM
السلام عليكم ورحمة الله وبركاته
بعد رؤتي لمشروع المبدعين sooriaty03 و سعود
الناسخ الديناميكي للصفحات الاولى للمواضيع مع مرفقاتها
برنامج المحرر لكتابة مواضيع المنتدى - النسخة النهائية
شفت انهم اعتمدو طريقة يدوية لإخذ الكوكيز
حيث يجب على المستخدم ان يأخذ كوكيز الدخول بواسطة متصفح Google Chrome
بعد ماشفت موضوعهم قررت كتابة هذا الكود لجلب الكوكيز بدون الحاجة الى المتصفحات.
اولا اضف هذا الكلاس :-
الدالة الرئيسية في الكلاس هي GetLoginCookies ، ولأستخدام الكوكيز المرجع منها
نكتب مثلا في حدث Form_load طلب لعرض صفحة المنتدى :-
بعد تشغيل البرنامج بتلاقي صفحة انحفظت في المسار المذكور في الكود
تفتح الصفحة وتلاقي :-
بعد رؤتي لمشروع المبدعين sooriaty03 و سعود
الناسخ الديناميكي للصفحات الاولى للمواضيع مع مرفقاتها
برنامج المحرر لكتابة مواضيع المنتدى - النسخة النهائية
شفت انهم اعتمدو طريقة يدوية لإخذ الكوكيز
حيث يجب على المستخدم ان يأخذ كوكيز الدخول بواسطة متصفح Google Chrome
بعد ماشفت موضوعهم قررت كتابة هذا الكود لجلب الكوكيز بدون الحاجة الى المتصفحات.
اولا اضف هذا الكلاس :-
PHP كود :
Public Shared Class MyBB
Public Shared Function GetLoginCookies(loginUrl As String, Username As String, Password As String, Enicode As Encoding) As String
Dim data As Byte() = Enicode.GetBytes("username=" & Username & "&password=" & Password & "&submit=Login&action=do_login&url=")
Dim Loginrq As HttpWebRequest = DirectCast(WebRequest.Create(loginUrl), HttpWebRequest)
Loginrq.Method = "POST"
Loginrq.KeepAlive = True
Loginrq.CookieContainer = New CookieContainer()
Loginrq.ContentType = "application/x-www-form-urlencoded"
Loginrq.ContentLength = data.Length
Loginrq.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:22.0) Gecko/20100101 Firefox/22.0"
Using sr As Stream = Loginrq.GetRequestStream()
sr.Write(data, 0, data.Length)
sr.Close()
End Using
Using Loginres As HttpWebResponse = DirectCast(Loginrq.GetResponse(), HttpWebResponse)
Return GetStringCookies(Loginres.Cookies)
End Using
End Function
Public Shared Function GetEncoding(url As String) As Encoding
Dim rq As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest)
Dim rs As HttpWebResponse = DirectCast(rq.GetResponse(), HttpWebResponse)
Return Encoding.GetEncoding(rs.CharacterSet)
End Function
Private Shared Function GetStringCookies(cookies As CookieCollection) As String
Dim result As String = String.Empty
For Each cook As Cookie In cookies
result += cook.Name + "=" + cook.Value & ";"
Next
Return result
End Function
End Class
الدالة الرئيسية في الكلاس هي GetLoginCookies ، ولأستخدام الكوكيز المرجع منها
نكتب مثلا في حدث Form_load طلب لعرض صفحة المنتدى :-
PHP كود :
rivate Sub Form1_Load(sender As Object, e As EventArgs)
Dim forumUrl As String = "http://vb4arb.com/vb"
Dim loginUrl As String = "http://vb4arb.com/vb/member.php"
Dim userName As String = "الشاكي لله"
Dim password As String = "......"
Dim downloadPath As String = "c:/1/vb4arb.html"
Dim Enicode As Encoding = MyBB.GetEncoding(forumUrl)
Dim rq As HttpWebRequest = DirectCast(WebRequest.Create(forumUrl), HttpWebRequest)
rq.Method = "GET"
rq.KeepAlive = True
rq.Headers.Add("Cookie", MyBB.GetLoginCookies(loginUrl, userName, password, Enicode))
rq.ContentType = "text/html"
rq.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:22.0) Gecko/20100101 Firefox/22.0"
Dim stored As String = String.Empty
Using Getres As HttpWebResponse = DirectCast(rq.GetResponse(), HttpWebResponse)
Using rd As New StreamReader(Getres.GetResponseStream())
Dim wr As New StreamWriter(downloadPath)
wr.Write(rd.ReadToEnd())
wr.Close()
End Using
End Using
End Sub
بعد تشغيل البرنامج بتلاقي صفحة انحفظت في المسار المذكور في الكود
تفتح الصفحة وتلاقي :-