Bagaimana cara mengeklik tombol di situs lain secara terprogram?

Saya Ingin Masuk ke situs lain dengan program saya (asp.net/C#).

  1. BAGAIMANA saya dapat merayapi situs dan menemukan kotak teks nama pengguna & kata sandi dan mengisinya dengan data yang diperlukan.
  2. lalu BAGAIMANA cara menekan/menembak tombol login?

CATATAN : Saya merayapi situs dengan HtmlAgilityPack sebelumnya..apakah ada cara untuk menggunakan dll ini atau dll lainnya?

misalnya nama pengguna adalah : kata sandi pengguna adalah : kode sandi dan id tombol login adalah : Tekan bagaimana saya bisa melakukan ini?


person Amin AmiriDarban    schedule 23.01.2013    source sumber
comment
Anda cukup mengirimkan permintaan posting yang dibuat khusus untuk halaman login mereka. Biasanya hanya itu yang dilakukan dengan mengklik tombol.   -  person Stefan H    schedule 23.01.2013
comment
saya tidak mengerti...bisakah Anda menunjukkan kepada saya contoh kode?   -  person Amin AmiriDarban    schedule 23.01.2013
comment
Contoh: http://stackoverflow.com/questions/4015324/http-request-with-post   -  person Stephen    schedule 23.01.2013
comment
Memasuki perayapan web dan mencoba mengarahkan halaman melalui kode akan mengharuskan Anda memahami apa yang terjadi dalam protokol HTTP. Saat Anda pertama kali menavigasi ke suatu halaman, itu adalah permintaan GET. Saat Anda mengklik tombol (atau kemungkinan aktivitas lainnya), browser Anda melakukan POST ke halaman tersebut dan mengirimkan serangkaian parameter (lihat tab jaringan di bawah alat pengembang di chrome dengan F12 untuk melihat apa yang dikirim saat Anda menekan kirim pada a formulir halaman).   -  person Stefan H    schedule 23.01.2013


Jawaban (1)


Anda tidak ingin bekerja seperti itu. Anda perlu menyimulasikan apa yang akan dilakukan situs setelah formulir tersebut dikirimkan dengan permintaan Posting ke server, dengan meneruskan nilainya. Anda dapat mengevaluasi apa yang dilakukan situs dengan menggunakan Fiddler2 dan melakukan pengiriman formulir secara normal, lalu simpulkan seperti di bawah ini:

HttpWebRequest request;
        HttpWebResponse response;
        var responseData = "";
        var strUrl = "https://auctions.godaddy.com/trpSearchResults.aspx";

        var postData = string.Format("action=review_selected_add&items={0}_B_{1}_1|&rnd={2}&JlPYXTX=347bde7", auctionRef, bid,
            randomDouble(0, 1).ToString("0.00000000000000000"));
        request = (HttpWebRequest)WebRequest.Create(strUrl);
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        request.ContentLength = postData.Length;
        request.Accept = "text/html, application/xhtml+xml, */*";
        request.Accept = "image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/x-silverlight, application/x-silverlight-2-b2, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*";
        request.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11";
        request.Headers.Add("Accept-Encoding", "deflate");
        request.Referer = "auctions.godaddy.com";
        request.Headers["my-header"] = "the-value";
        request.KeepAlive = true;
        request.CookieContainer = cookies;
        request.Timeout = Timeout.Infinite;

        var stOut = new StreamWriter(request.GetRequestStream());
        stOut.Write(postData);
        stOut.Flush();
        stOut.Close();
        stOut = null;

        response = (HttpWebResponse)request.GetResponse();
        response.Cookies = request.CookieContainer.GetCookies(request.RequestUri);
        var encoding = new System.Text.UTF8Encoding();
        var responseReader = new StreamReader(response.GetResponseStream(), encoding, true);

        encoding = new System.Text.UTF8Encoding();
        responseReader = new StreamReader(response.GetResponseStream(), encoding, true);

        responseData = responseReader.ReadToEnd();
        response.Close();
        responseReader.Close();

Buat saja kelas menggunakan di atas untuk memposting data dan kembalikan html.

person Aaron Gibson    schedule 25.01.2013