2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 C# отрыть Firefox, ввести пароль и нажать на ссылку.
Сообщение06.12.2011, 19:56 


17/04/06
256
Добрый день!

Я хотел бы написать на C# программу, которая бы делал следующее: открывала Firefox, загружала определенную страницу, вводила пароль и нажимал на ссылку.

У меня небольшой опыт программирования на C#, но как подступиться к этой задаче, где начать читать - неясно.

Для простоты ответа вы можете предположить, что мне абсолютно все известно о странице которую я хочу открыть в Firefox.

Спасибо!

 Профиль  
                  
 
 Re: C# отрыть Firefox, ввести пароль и нажать на ссылку.
Сообщение13.12.2011, 16:59 
Аватара пользователя


12/12/11
32
Через C# это не сделать, надо писать плагин на JavaScript для этого.
Но через C# можно сделать следующее: вам нужно научиться анализировать трафик http и сгенерировать http запросы, которые посылает ваш браузер при соответствующих действиях.
Самый простой способ сделать это - прочитать поверхностно про суть http, далее использовать System.Net.WebClient. Скорее всего нужно подцеплять cookies для этого.

 Профиль  
                  
 
 Re: C# отрыть Firefox, ввести пароль и нажать на ссылку.
Сообщение13.12.2011, 17:16 
Заслуженный участник


26/07/09
1559
Алматы
Ну запустить программу можно. Далее можно отправлять сообщения в окно программы и таким образом управлять ею. В крайнем случае можно имитировать глобальные события мыши и клавиатуры. Так поступают некоторые вирусы -- определяют антивирус, имитируют нажатия на нужные кнопки, отвечают на все предупреждения и таким образом выключают антивирус, а уже потом спокойно гадят. :) Хотя плагин или скрипт конечно проще.

Но возможно ваша исходная задача допускает ещё более простое решение. Вот, к примеру, зачем вам нужен сам браузер? Вдруг вы можете самостоятельно выполнить все необходимые действия по доступу к нужному вам ресурсу... Собственно, jrock уже писал об этом...

 Профиль  
                  
 
 Re: C# отрыть Firefox, ввести пароль и нажать на ссылку.
Сообщение13.12.2011, 19:13 
Заслуженный участник


27/04/09
28128
Ещё есть кривой способ. Его не надо использовать. Просто расскажу.
Создаём файл .url с нужной ссылкой (как сказал jrock, поглядев, что там браузер посылает) и открываем его Firefox’ом. Никогда не проверял, но, может быть, даже можно адрес и параметром командной строки передать.

 Профиль  
                  
 
 Re: C# отрыть Firefox, ввести пароль и нажать на ссылку.
Сообщение13.12.2011, 20:27 
Заслуженный участник


26/07/09
1559
Алматы
Почему кривой? Нормальный способ. Надо конечно заранее посмотреть как устроена форма с паролем чтобы сформировать ссылку. Если это вдруг post-форма, то я не знаю как запрос через командную строку браузеру передать. :)

 Профиль  
                  
 
 Re: C# отрыть Firefox, ввести пароль и нажать на ссылку.
Сообщение13.12.2011, 21:30 
Заслуженный участник


27/04/09
28128
А через командную строку точно работает?

 Профиль  
                  
 
 Re: C# отрыть Firefox, ввести пароль и нажать на ссылку.
Сообщение14.12.2011, 01:26 


17/04/06
256
Большое все спасибо за ответы!

Действительно, я неточно описал задачу.

Вот то что я делаю обычно вручную: отрываю страницу в браузере, ввожу пороль, на следующей странице нажимаю на ссылку. Эта ссылк отрывает безопасный канал для приложений (что-то навроде VPN), этот канал закрывается самостоятельно каждые 6 часов, мне необходимо его поддерживать открытым. Я и хотел это сделать через C#.

Я почитаю насчет WebClient, но не знаю смогу ли я разобраться с Cookie.

А, что на JavaScript это намного проще?

 Профиль  
                  
 
 Re: C# отрыть Firefox, ввести пароль и нажать на ссылку.
Сообщение14.12.2011, 01:45 
Аватара пользователя


12/12/11
32
Bridgeport в сообщении #515333 писал(а):
А, что на JavaScript это намного проще?

Проще.

 Профиль  
                  
 
 Re: C# отрыть Firefox, ввести пароль и нажать на ссылку.
Сообщение19.12.2011, 21:43 


19/12/11
1
Bridgeport в сообщении #515333 писал(а):
Большое все спасибо за ответы!

Действительно, я неточно описал задачу.

Вот то что я делаю обычно вручную: отрываю страницу в браузере, ввожу пороль, на следующей странице нажимаю на ссылку. Эта ссылк отрывает безопасный канал для приложений (что-то навроде VPN), этот канал закрывается самостоятельно каждые 6 часов, мне необходимо его поддерживать открытым. Я и хотел это сделать через C#.

Я почитаю насчет WebClient, но не знаю смогу ли я разобраться с Cookie.

А, что на JavaScript это намного проще?



Я подобные вещи писал на с помощью СUrl, эта библиотека имитирует любой браузер. У меня есть наработки для работы с одни сайтом, если интересует могу скинуть :wink:

-- 19.12.2011, 20:49 --

Нарыл исходник
код: [ скачать ] [ спрятать ]
Используется синтаксис C#
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using SeasideResearch.LibCurlNet;
  10.  
  11. namespace TravianBot
  12. {
  13.     public partial class Main : Form
  14.     {
  15.         private static Easy easy;
  16.  
  17.         private static string text;
  18.  
  19.         public Main()
  20.         {
  21.             InitializeComponent();
  22.  
  23.             text = string.Empty;
  24.  
  25.             Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL);
  26.         }
  27.  
  28.         private void button1_Click(object sender, EventArgs e)
  29.         {
  30.             const string url = "http://s1.travian.com.ua/dorf1.php";
  31.             const string userAgent = "Mozilla/5.0 (Windows NT 6.1; rv:2.0) Gecko/20100101 Firefox/4.0";
  32.  
  33.             string content = "name=%D0%A3%D0%BB%D1%8C%D1%84%D1%81%D0%B0%D1%80%D0%BA&password=d#33575s#110575&s1.x=69&s1.y=5&w=1280%3A1024&login=1302207431";
  34.  
  35.             easy = new Easy();
  36.  
  37.             Easy.WriteFunction wf = OnWriteData;
  38.  
  39.             easy.SetOpt(CURLoption.CURLOPT_URL, url);
  40.             easy.SetOpt(CURLoption.CURLOPT_TIMEOUT, "60");
  41.             easy.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf);
  42.             easy.SetOpt(CURLoption.CURLOPT_USERAGENT, userAgent);
  43.  
  44.             easy.SetOpt(CURLoption.CURLOPT_FOLLOWLOCATION, true);
  45.  
  46.             easy.SetOpt(CURLoption.CURLOPT_POST, true);
  47.             easy.SetOpt(CURLoption.CURLOPT_POSTFIELDS, content);
  48.  
  49.             easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYHOST, 1);
  50.             easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYPEER, 0);
  51.  
  52.             easy.Perform();
  53.             easy.Cleanup();
  54.  
  55.             textBox1.Text = text;
  56.  
  57.             string _content = "name=Ульфсарк&password= &s1.x=69&s1.y=5&w=1280%3A1024&login=1302207431";
  58.             byte[] Bytes = Encoding.UTF8.GetBytes(_content);
  59.             string Headers = "Content-Type: application/x-www-form-urlencoded";
  60.             webBrowser1.Navigate("http://s1.travian.com.ua/dorf1.php", "", Bytes, Headers);
  61.         }
  62.  
  63.         public static Int32 OnWriteData(Byte[] buf, Int32 size, Int32 nmemb, Object extraData)
  64.         {
  65.             text += System.Text.Encoding.UTF8.GetString(buf);
  66.            
  67.             return size * nmemb;
  68.         }
  69.     }
  70. }

 Профиль  
                  
 
 Re: C# отрыть Firefox, ввести пароль и нажать на ссылку.
Сообщение19.12.2011, 22:57 
Админ форума
Аватара пользователя


19/03/10
8952
 i 
PleaseTwo в сообщении #517422 писал(а):
Нарыл исходник
При размещении исходных кодов пользуйтесь, пожалуйста, тегом syntax. Добавил.

 Профиль  
                  
 
 Re: C# отрыть Firefox, ввести пароль и нажать на ссылку.
Сообщение18.12.2012, 14:30 


18/12/12
1
Selenium WebDriver подходит. Мне вот интересно как встроить firefox браузер как COM объект, например, в своё приложение?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group