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.
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
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
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.
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ä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.