1

いくつか調べてみると、「リモート サーバーがエラーを返しました: (403) Forbidden.」というエラーが表示され続ける理由がわかったと思います。

コードは次のとおりです。

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    ' Set the initial parameters
    Dim UserID As String = TextBox1.Text ' Username
    Dim PWord As String = TextBox2.Text ' Password
    Dim domain As String = "https://pinterest.com/login/?next=%2F"
    Dim encoding As New System.Text.ASCIIEncoding
    Dim CookieC As New Net.CookieContainer

    ' Use the appropriate HTML field names to stuff into the post header
    Dim PostData As String = _
        "email" & UserID & _
        "&password=" & PWord ' Note: where txtUName & txtPWord are the field names
    Dim Data() As Byte = encoding.GetBytes(PostData)

    ' Initialise the request
    Dim LoginReq As Net.HttpWebRequest = Net.WebRequest.Create(domain) ' Login location taken from the form action
    With LoginReq
        .KeepAlive = False
        .Method = "POST"
        ' Note: if the page uses a redirect if will fail
        .AllowAutoRedirect = False
        .ContentType = "application/x-www-form-urlencoded"
        .ContentLength = Data.Length
        ' Set empty container
        .CookieContainer = CookieC
    End With

    ' Add the POST data
    Dim SendReq As IO.Stream = LoginReq.GetRequestStream
    SendReq.Write(Data, 0, Data.Length)
    SendReq.Close()

    ' Obtain the response
    Dim LoginRes As Net.HttpWebResponse = LoginReq.GetResponse()

    ' Retreive the headers from the request (e.g. the location header)
    Dim Redirect As String = LoginRes.Headers("Location")
    ' Add any returned cookies to the cookie collection
    CookieC.Add(LoginRes.Cookies)

    ' Move to the redirected page as a GET request...
    LoginReq = Net.WebRequest.Create(domain & Redirect)
    With LoginReq
        .KeepAlive = False
        .Method = "GET"
        .ContentType = "application/x-www-form-urlencoded"
        .AllowAutoRedirect = True
        .CookieContainer = CookieC
    End With

    ' Perform the navigate and output the HTML
    LoginRes = LoginReq.GetResponse()
    Dim sReader As IO.StreamReader = New IO.StreamReader(LoginRes.GetResponseStream)
    Dim HTML As String = sReader.ReadToEnd
    If HTML.Contains("Following") Then

        MessageBox.Show("yay!")

    Else

        MessageBox.Show("no!")

    End If


End Sub

次の行の後に次のコードを追加しました: Dim LoginReq As Net.HttpWebRequest = Net.WebRequest.Create(domain)

上記の行の後のコード:

LoginReq.Credentials = New System.Net.NetworkCredential(UserID, PWord)

ただし、次の行で問題が発生し続けます。

Dim LoginRes As Net.HttpWebResponse = LoginReq.GetResponse()

これを修正する方法がわかりません。助けてください!

4

0 に答える 0