Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Авторизация на сайте для последующего парсинга стр 
:(
    Опции темы
winchester7
  Дата 18.5.2013, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 18.5.2013

Репутация: нет
Всего: нет



Добрый день. Пытаюсь написать первую программу на C#. Требуется: зайти на сайт trustlink.ru, залогиниться, спарсить текущий баланс.

Нагуглил исходник парсера - с ним вроде проблем нет. Далее нашел статью по авторизации: http://www.rsdn.ru/article/inet/httpweb.xml

Добавил нужного кода. Но почему-то авторизация так и не заработала. В логах Fiddlera обнаружил, что авторизация не идет и сайт кидает на страницу http://www.trustlink.ru/users/login. Причем опять же из логов заметил такую штуку, что при входе вручную через браузер, в ответах есть куки, но при работе программы их почему-то нет.

Помогите пожалуйста. Код приложил, user[login]=yourlogin&user[password]=yourpass в выделенном должны быть логин/пароль.

Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
using System.IO;
using System.Text.RegularExpressions;
using System.Net;
 
namespace My1
{
    public partial class Form1 : Form
    {
        private int i = 10;
 
        public Form1()
        {
            InitializeComponent();
 
            
        }
 
       // Раньше. Парс + таймер
         private string GetEasylabViews()
        {
            string url = "http://trustlink.ru";
            string html = string.Empty;
            string pattern = "Вывести средства из системы";
 
            //Заходим на главную, чтобы узнать сессию
            
           HttpWebResponse result = null;
            byte[] SomeBytes = null;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://trustlink.ru");
            request.Proxy = new WebProxy("127.0.0.1", 8888);
            request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31";
            request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            request.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4");
            request.Headers.Add("Accept-Charset", "windows-1251,utf-8;q=0.7,*;q=0.3");
            request.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
            request.ContentType = "application/x-www-form-urlencoded";
          
            result = (HttpWebResponse)request.GetResponse();
             string sCookies = request.Headers["Set-Cookie"];
 
             // Логинимся
 
             request = (HttpWebRequest)WebRequest.Create("http://trustlink.ru/user/auth");
             request.Proxy = new WebProxy("127.0.0.1", 8888);
             request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31";
             request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
             request.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4");
             request.Headers.Add("Accept-Charset", "windows-1251,utf-8;q=0.7,*;q=0.3");
             request.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
             request.ContentType = "application/x-www-form-urlencoded";
 
             if (!String.IsNullOrEmpty(sCookies)) request.Headers.Add(HttpRequestHeader.Cookie, sCookies);
 
             request.AllowAutoRedirect = false;
 
             request.Method = "POST";
             string FormParams = "user[login]=yourlogin&user[password]=yourpass";
             SomeBytes = Encoding.UTF8.GetBytes(FormParams);
             request.ContentLength = SomeBytes.Length;
             Stream newStream = request.GetRequestStream();
             newStream.Write(SomeBytes, 0, SomeBytes.Length);
             newStream.Close();
             result = (HttpWebResponse)request.GetResponse();
 
             // Идем на страницу статистики
 
             // получаем cookie
             sCookies = "";
             if (!String.IsNullOrEmpty(request.Headers["Set-Cookie"]))
             {
                 sCookies = request.Headers["Set-Cookie"];
             }
 
             request = (HttpWebRequest)WebRequest.Create("http://www.trustlink.ru/sites/list");
             request.Referer = "http://www.trustlink.ru";
             request.Proxy = new WebProxy("127.0.0.1", 8888);
             request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31";
             request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
             request.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4");
             request.Headers.Add("Accept-Charset", "windows-1251,utf-8;q=0.7,*;q=0.3");
             request.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
             request.ContentType = "application/x-www-form-urlencoded";
 
             if (!String.IsNullOrEmpty(sCookies))
             {
                 request.Headers.Add(HttpRequestHeader.Cookie, sCookies);
             }
             result = (HttpWebResponse)request.GetResponse();
            StreamReader sr = new StreamReader(result.GetResponseStream(), Encoding.GetEncoding(1251));
            html = sr.ReadToEnd();
 
            Match res;
            res = Regex.Match(html, pattern);
            return res.Groups[1].ToString();
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            
            i--;
            this.COUNTER.Text = i.ToString();
            if (i == 0)
            {
                this.VIEWS.Text = this.GetEasylabViews();
                i = 10;
            }
        }
 
    }
}

PM MAIL   Вверх
Machaon
Дата 21.5.2013, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


КаРолЬ АсьКи МуАЛя
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 12.8.2008
Где: М.о. Красногорск

Репутация: нет
Всего: 3



Уже давно не модно куки руками перебирать для этого существует CookieContainer.
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.2559 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.