Как программно нажать кнопку на другом сайте?

Я хочу войти на другой сайт с помощью моей программы (asp.net/C#).

  1. КАК я могу просканировать сайт и найти текстовые поля имени пользователя и пароля и заполнить их необходимыми данными.
  2. тогда КАК я могу нажать/запустить кнопку входа в систему?

ПРИМЕЧАНИЕ. Раньше я просматривал сайт с помощью HtmlAgilityPack. Есть ли способ использовать эту dll или любые другие dll?

например, имя пользователя: пароль пользователя: код доступа, а идентификатор кнопки входа: нажмите, как я могу это сделать?


person Amin AmiriDarban    schedule 23.01.2013    source источник
comment
Вы просто отправляете запрос на публикацию, специально созданный для их страницы входа. Это все, чем обычно является нажатие кнопки.   -  person Stefan H    schedule 23.01.2013
comment
я не могу понять... не могли бы вы показать мне пример кода?   -  person Amin AmiriDarban    schedule 23.01.2013
comment
Пример: http://stackoverflow.com/questions/4015324/http-request-with-post   -  person Stephen    schedule 23.01.2013
comment
Чтобы заняться сканированием веб-страниц и попытками управлять страницами с помощью кода, вам потребуется понять, что происходит в протоколе HTTP. Когда вы впервые переходите на страницу, это запрос GET. Когда вы нажимаете кнопку (или, возможно, другие действия), ваш браузер выполняет POST на страницу и отправляет набор параметров (посмотрите на вкладку сети в инструментах разработчика в Chrome с помощью F12, чтобы увидеть, что отправляется, когда вы нажимаете «Отправить» на странице). форма страницы).   -  person Stefan H    schedule 23.01.2013


Ответы (1)


Вы не хотите так работать. Вам нужно смоделировать, что сайт будет делать после того, как эта форма будет отправлена ​​​​с запросом Post на сервер, передав значения. Вы можете оценить, что делает сайт, используя Fiddler2 и выполняя отправку формы в обычном режиме, а затем суммируя, как показано ниже:

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();

Просто создайте класс, используя приведенное выше для публикации данных, и верните html.

person Aaron Gibson    schedule 25.01.2013