منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : جلب كوكيز العضوية بالكود (خاص لمنتديات Mybb فقط)
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته


بعد رؤتي لمشروع المبدعين sooriaty03 و سعود


الناسخ الديناميكي للصفحات الاولى للمواضيع مع مرفقاتها


برنامج المحرر لكتابة مواضيع المنتدى - النسخة النهائية


شفت انهم اعتمدو طريقة يدوية لإخذ الكوكيز

حيث يجب على المستخدم ان يأخذ كوكيز الدخول بواسطة متصفح Google Chrome




بعد ماشفت موضوعهم قررت كتابة هذا الكود لجلب الكوكيز بدون الحاجة الى المتصفحات.

اولا اضف هذا الكلاس :-

PHP كود :
Public Shared Class MyBB
    
Public Shared Function GetLoginCookies(loginUrl As StringUsername As StringPassword As StringEnicode 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(data0data.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 ObjectAs 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(loginUrluserNamepasswordEnicode))
    
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 

بعد تشغيل البرنامج بتلاقي صفحة انحفظت في المسار المذكور في الكود

تفتح الصفحة وتلاقي :-

السلام عليكم ورحمة الله وبركاته

رائع رائع رائع
يعطيك ألف عافية
راح أقوم بإضافتها بإذن الله
شكرا لك
شكرا جزيلا اخي الكريم