Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: MediaWiki ja sivujen palautus

raakaliha [08.07.2010 17:34:01]

#

Imports System.IO
Imports System.Net
Imports System.Text
Public Class Form1
     Const BUFFER_SIZE As Integer = 128
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        'Dim URL As String = "http://jjp.jouluserver.com/posti.php"
        Dim URL As String = "http://wandalpedia.wiki-site.com/index.php?title=Toiminnot:Palauta&action=submit"
        Dim postData As String = _
        "wpComment=asdf&restore=Palauta&target=A&wpEditToken=068b7e268a3e5707b63cbd96c120c62b%2B\"

        Dim request As System.Net.HttpWebRequest = _
        System.Net.WebRequest.Create(URL)

        request.UserAgent = _
        "Mozilla/5.0 (Windows; U; Windows NT 5.1; fi; rv:1.9.0.5) " & _
        "Gecko/2008120122 Firefox/3.0.5 (.NET CLR 3.5.30729)"

        request.Headers.Add(Net.HttpRequestHeader.Cookie, "wikicoil11_wandalpedia_UserID=1; wikicoil11_wandalpedia_UserName=Juhko; wikicoil11_wandalpedia_Token=18249e9e840b157a7c7b831767954e8b; wikicoil11_wandalpedia__session=rbllj4orjr8so84tudhd86cl76")
        request.Method = "POST"
        request.AllowAutoRedirect = True
        request.ContentType = "application/x-www-form-urlencoded"
        request.ContentLength = postData.Length

        Dim requestStream As System.IO.Stream = request.GetRequestStream()
        Dim BytesRead As Integer = 0
        Dim strHTML As String
        Dim postBytes As Byte() = _
        System.Text.Encoding.Default.GetBytes(postData)
        requestStream.Write(postBytes, 0, postBytes.Length)
        requestStream.Close()

        Dim response As System.Net.HttpWebResponse = request.GetResponse()

        Dim buffer(BUFFER_SIZE) As Byte

        Dim ResponseStream As Stream = _
        response.GetResponseStream()

        Dim strResponse As StringBuilder = _
        New StringBuilder("")

        BytesRead = ResponseStream.Read( _
        buffer, 0, BUFFER_SIZE)

        While BytesRead <> 0

            strResponse.Append( _
            Encoding.UTF8.GetString( _
            buffer, 0, BytesRead))
            BytesRead = ResponseStream.Read( _
            buffer, 0, BUFFER_SIZE)
            strHTML = strResponse.ToString()

        End While
        TextBox1.Text = strHTML

        response.Close()
    End Sub
End Class

Pitäisi palauttaa testiwikiini http://wandalpedia.wiki-site.com/ tehty artikkeli A, mutta ei tee niin. Cookie ja wpEditToken on kopioitu Firefoxilta.

neau33 [09.07.2010 07:03:02]

#

Moikka taas raakile!

testaa toimisiko oheisen kaltainen viritelmän...

Imports System
Imports System.IO
Imports System.Net
Imports System.Text

Public Partial Class MainForm

   Public Sub New()
   Me.InitializeComponent()
   End Sub


   Class MyClient: Inherits WebClient

      Private IsHOnly As Boolean

      Public Property HeadOnly() As Boolean
         Get
            Return IsHOnly
         End Get
         Set (value As Boolean)
            IsHOnly = value
         End Set
      End Property

      Private Cookies As New CookieContainer()

      Protected Overloads Overrides Function _
      GetWebRequest(address As Uri) As WebRequest

         Dim request As WebRequest = _
         MyBase.GetWebRequest(address)

         If HeadOnly AndAlso request.Method = "GET" Then
            request.Method = "HEAD"
         End If

         If TypeOf(request) Is HttpWebRequest Then
            TryCast(request, HttpWebRequest). _
            CookieContainer = Cookies
            request.Method = "POST"
            request.ContentType = _
            "application/x-www-form-urlencoded"
            Dim bytes() As Byte = _
            Encoding.Default.GetBytes("user=Juhko&pass=1")
            request.ContentLength = bytes.Length
            Dim oStream As Stream = _
            request.GetRequestStream()
            oStream.Write(bytes, 0, bytes.Length)
            oStream.Close()
         End If

         Return request

      End Function

   End Class

   Private Sub Form1_Load(ByVal sender As System.Object, _
   ByVal e As System.EventArgs) Handles MyBase.Load

      Using client As New MyClient()

         client.HeadOnly = True
         Dim uri As String = "http://wandalpedia.wiki-site.com/"
         Dim body As Byte() = client.DownloadData(uri)

         Dim type As String = client.ResponseHeaders("content-type")
         client.HeadOnly = False

         If type.StartsWith("text/") Then
            Me.textBox1.Text = _
            Encoding.UTF8.GetString( _
            client.DownloadData(uri + "index.php/Etusivu"))
         End If

      End Using

   End Sub

End Class

raakaliha [09.07.2010 15:10:29]

#

Siis, mitä tuon olisi tarkoitus tehdä ylipäätään? Tarkoitus tässä olisi myös että se ei kysyisi salasanaa, vaan pelkät keksit joiden perusteella Mediawiki tunnistaa käyttäjäsession. Salasanaa kysyvä systeemi edellyttäisi koko muun ohjelman uudelleenkirjoitusta

Macro [09.07.2010 16:02:59]

#

Sessio on nimen perusteella sessio, joten kun suljet selaimen, myös sessio katoaa. Koodisi ei ole kirjautunut sisään ennen palautusta. Tulos: Sivua ei voi palauttaa, koska et ole kirjautunut sisään.

Sinun pitää ensin kirjautua sivulle sisään tunnuksillasi, ja sitten laittaa koosi palauttamaan sivu.

Mielestäni tämä on sama asia, että miksen voi maksaa toisen pankkitililtä, vaikka ko. henkilö olisi omalla koneellaan kirjautunut sisään.

raakaliha [10.07.2010 17:37:03]

#

Saihan tuon Nean koodin sovellettua ja toimimaan, anteeksi tyhmyyteni. Ja kiitos. Macron viestin merkitystä en aivan ymmärtänyt, sillä testauksen mukaan olen kirjautuneena sisään kyllä.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta