HTML Scraping Как получить значение __RequestVerificationToken в VB.NET - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь получить данные с https://www.bddk.org.tr/BultenHaftalik этой страницы. (Вы можете поставить / en, чтобы увидеть на английском) (Извините за мой плохой английский)

Но мне нужно опубликовать __RequestVerificationToken с некоторыми параметрами.

Я создал простую функцию GET, чтобы получить значение cookie и направить его в метод, который предоставляет параметры Post, но мой ответ выглядит так:

{"Baslik":"Grafik Başlığı","XEkseni":[],"YEkseni":[]}

А AJAX на сайте:

        function VeriGetir(id, para, sutun, gun, tarafKodu ) {

        if (myChart != undefined) {
            myChart.destroy();
        }

         $.ajax({
            url: "/BultenHaftalik/tr/Home/KiyaslamaJsonGetir",
            type: 'POST',
             data: {/* __RequestVerificationToken: token, */"dil":'tr', "tarih": '8.3.2019', "id": id, "parabirimi": para, "sutun": sutun, "tarafKodu": tarafKodu ,"gun":gun },
             success: function (result) {

                 Graph(result.Baslik, result.XEkseni, result.YEkseni);

                 $("#ModalBaslik").text(result.Baslik);

            }
        });

В моем коде сверху:

    Private HaftalikTaylan As State = New State With {.Url = "http://www.bddk.org.tr/BultenHaftalik/"}
    Private __RequestVerificationToken As String = String.Empty
    Private HaftalikTaylan_post As State = New State With {.Url = "http://www.bddk.org.tr/BultenHaftalik/tr/Home/DonemDegistir/"}

Методы похожи на:

        Private Sub Deneme()

        Dim client As RestSharp.RestClient = New RestSharp.RestClient(Me.HaftalikTaylan.Url)
        Me.HaftalikTaylan.Request = New RestSharp.RestRequest(RestSharp.Method.GET) With {.Timeout = 5 * 60 * 1000}
        Me.HaftalikTaylan.Response = client.Execute(Me.HaftalikTaylan.Request)

        If Me.HaftalikTaylan.Response.Cookies.Count > 0 Then

            For i As Integer = 0 To Me.HaftalikTaylan.Response.Cookies.Count - 1
                If Me.HaftalikTaylan.Response.Cookies(i).Name.Contains("__RequestVerificationToken_L0J1bHRlbkhhZnRhbGlr0") Then
                    __RequestVerificationToken = Me.HaftalikTaylan.Response.Cookies(i).Value
                End If
            Next
        End If
        Me.Deneme_post(__RequestVerificationToken)
    End Sub

    Private Sub Deneme_post(__RequestVerificationToken As String)

        Me.ExtractClear()

        Dim client As RestSharp.RestClient = New RestSharp.RestClient(Me.HaftalikTaylan_post.Url)
        Me.HaftalikTaylan_post.Request = New RestSharp.RestRequest(RestSharp.Method.POST) With {.Timeout = 5 * 60 * 1000}
        Me.HaftalikTaylan_post.Request.AddHeader("cahce-control", "no-cache")
        Me.HaftalikTaylan_post.Request.AddHeader("content-type", "application/x-www-form-urlencoded")

        Dim parameterString As String = "__RequestVerificationToken=" & __RequestVerificationToken & "&dil=tr&tarih=8.3.2019&id=154&parabirimi=TL&sutun=154&tarafKodu=10001&gun=90"

        Me.HaftalikTaylan_post.Request.AddParameter("application/x-www-form-urlencoded", parameterString, RestSharp.ParameterType.RequestBody)
        Me.HaftalikTaylan_post.Response = client.Execute(Me.HaftalikTaylan_post.Request)

    End Sub

Спасибо.

...