Имитация действий входа в VBulletin с использованием C # - PullRequest
3 голосов
/ 16 марта 2010

Я пытаюсь написать программу (C #), которая может войти и создать новую тему на форумах VBulletin. Я пробовал 2 способа:

1) Использовать HttpWebRequest : вход выполнен. Однако создание нового потока не удалось. Это почтовый код:

public static void CreateNewThread(string url,string fId, string title, string message, string tag)
    {
        url += "newthread.php?do=postthread";

        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
        //string result = "";

        string values = "subject=" + title
                        + "&message=" + message
                        + "&tag=" + tag
                        + "&do=postthread"
                        + "&f=" + fId
                        + "&s="
                        + ""
                        ;

        req.Method = "POST";
        req.ContentType = "application/x-www-form-urlencoded";
        req.ContentLength = values.Length;

        ServicePointManager.Expect100Continue = false; // prevents 417 error

        using (StreamWriter writer = new StreamWriter(req.GetRequestStream(), Encoding.UTF8))
        {
            writer.Write(values);
        }

        HttpWebResponse c = (HttpWebResponse)req.GetResponse();
    }

Когда вы выполнили код, указанный выше, никакой защиты не было!

2) Использовать элемент управления WebBrowser:

 webBrowser1.Document.GetElementById("navbar_username").InnerText = "admin";
 webBrowser1.Document.GetElementById("navbar_password").InnerText = "123";

Но я не могу отправить, потому что у него нет имени / идентификатора, и кнопка входа одинакова! Подскажите пожалуйста, как отправить форму без имени формы / идентификатора и названия кнопки / идентификатора?

Спасибо!

С наилучшими пожеланиями,

1 Ответ

0 голосов
/ 16 марта 2010

Попробуйте смоделировать почтовые данные вместо заполнения формы:

string postData = "username=Kurresmack&password=pw&action=login&url=/";
webBrowser1.Navigate("www.sweclockers.com/forum/member.php", "", System.Text.Encoding.UTF8.GetBytes(postData), "Content-Type: application/x-www-form-urlencoded\r\n");
...