Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Примеры по работе с какими то сайтами


Автор: DenWPF 2.1.2010, 14:48
Интересуют примеры по работе с различными сайтами, большими или маленькими.

Автор: Экскалупатор 2.1.2010, 15:23
DenWPF, открываешь браузер и работаешь. тебе видеоурок что ли надо? как мышкой по экрану елозить?

а если серьезно, то опиши подробнее что тебе надо.

Автор: DenWPF 2.1.2010, 16:11
мне надо работа с API или если есть сайты без АПИ но с ними кто работал и выложил код.
интересуют сайты :
yahoo
myspace
linkedin
mail.ru
skype
ebay
facebook
youtube
lastfm
и т.п.

Автор: diadiavova 3.1.2010, 00:09
DenWPF, на гуголькоде есть примеры клиентских библиотек для работы с апи и не только гуголевскими. Для работы с гуголевскими апи(в том числе ютубом) библиотеки здесь
http://code.google.com/apis/gdata/docs/directory.html
А другие надо на гуголькоде смотреть. Недавно был вопрос по мэйлу я выкладывал ссылку для работы OpenSocial вроде там его используют
http://code.google.com/p/opensocial-net-client/downloads/list
А вообще гуголь в помощь.

Автор: DenWPF 3.1.2010, 12:11
та вот с гуглом...я скачал их библиотеку...вы думаете я там что то понял??=((

OpenSocial, тоже не понял, а гугл мне уже глаза замусолил...на одно и тоже попадаю..
может оно и то , но понять как оно работает не могу=*(

Автор: diadiavova 3.1.2010, 12:13
Тогда нужно начинать с простейших вещей. Например отсюда
http://www.rsdn.ru/article/inet/httpweb.xml

Автор: DenWPF 3.1.2010, 13:29
а это сильно просто=)

Автор: DenWPF 3.1.2010, 19:43
решил начать с простого..на простоми остановился=(
вязл сайт lkjhhg.forum24.ru
вот отправить туда.
вроде все прозрачно, ну новерное все кроме куков.

Код


Host    lkjhhg.forum24.ru
User-Agent    Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.0.16) Gecko/2009120208 Firefox/3.0.16 (.NET CLR 3.5.30729)
Accept    text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language    ru,en-us;q=0.7,en;q=0.3
Accept-Encoding    gzip,deflate
Accept-Charset    windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive    300
Connection    keep-alive
Referer    http://lkjhhg.forum24.ru/


Код

            HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create("http://lkjhhg.forum24.ru/?filenumber=&message=qqqqqq22222222222222qqqqqqqqqq=&msgid&newreg=on&nick=zxczxc&only_new_re=0&pass=zxc&razdel=0&start=0&start_page_re=0&statisc=0`1280`32`no`no`no`no`no&work=2");

            objRequest.Method = "POST";
            objRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            objRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.0.16) Gecko/2009120208 Firefox/3.0.16 (.NET CLR 3.5.30729)";
            //objRequest.KeepAlive = 300;   На это ругается
            //objRequest.Connection = "keep-alive";
            objRequest.Referer = "http://lkjhhg.forum24.ru/";
            objRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.0.16) Gecko/2009120208 Firefox/3.0.16 (.NET CLR 3.5.30729)";
            //objRequest.Headers.Add("Accept-Language", "ru,en-us;q=0.7,en;q=0.3"); если вот с этими строчками, то ответ каракули приходят
            //objRequest.Headers.Add("Accept-Encoding", "gzip,deflate");
            //objRequest.Headers.Add("Accept-Charset", "windows-1251,utf-8;q=0.7,*;q=0.7");



Заголовки ответа, который должен прийти.
Код

Server    nginx/0.7.61-relax
Date    Sun, 03 Jan 2010 16:23:21 GMT
Content-Type    text/html; charset=iso-8859-1
Connection    keep-alive
Keep-Alive    timeout=20
Set-Cookie    s=øúkðôæüzÿòüzÿòüzÿôäå; expires=Fri, 25-Dec-2099 00:00:00 GMT; path=/;
Location    http://lkjhhg.forum24.ru/
Content-Length    209



после чего надо ещё вроде запрос ГЕТ зачем то отправить.

Заголовки запроса
Код

Host    lkjhhg.forum24.ru
User-Agent    Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.0.16) Gecko/2009120208 Firefox/3.0.16 (.NET CLR 3.5.30729)
Accept    text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language    ru,en-us;q=0.7,en;q=0.3
Accept-Encoding    gzip,deflate
Accept-Charset    windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive    300
Connection    keep-alive
Referer    http://lkjhhg.forum24.ru/
Cookie    s=øúkðôæüzÿòüzÿòüzÿôäå


вот куда и как куки записывать?
ну и вообще как это сделать


Автор: DenWPF 4.1.2010, 00:07
такс. не чо не получается. даже по первому заппросу куки не какие не приходят

Код

            objRequest.Method = "POST";
            objRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.0.16) Gecko/2009120208 Firefox/3.0.16 (.NET CLR 3.5.30729)";
            objRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            objRequest.Headers.Add("Accept-Language", "ru,en-us;q=0.7,en;q=0.3");
            objRequest.Headers.Add("Accept-Encoding", "gzip,deflate");
            objRequest.Headers.Add("Accept-Charset", "windows-1251,utf-8;q=0.7,*;q=0.7");
            objRequest.Headers.Add("Keep-Alive", "300");
            objRequest.KeepAlive = true;
            objRequest.Referer = "http://lkjhhg.forum24.ru/";

в запросе только Host не могу прописать.

Автор: diadiavova 4.1.2010, 11:40
Анализ работы конкретного сайта - штука достаточно сложная. Чтобы в этом разобраться надо кучу времени убить и, увы, никто не будет делать это за тебя. У меня например у самого сейчас отложено ряд таких задач и руки не доходят за них взяться(а кто на винграде флудить будет? smile ). Так что ...разбирайся smile 

Автор: DenWPF 4.1.2010, 11:51
так, вроде же все  прозрачно.
я использую Firebug для мазилы.
показываю запрос который отправляет браузер, пытаюсь тоже самое сделать из кода. но наверное что то делаю не так.

Автор: diadiavova 4.1.2010, 11:53
Значит надо анализировать несколько запросов. Ты не учитываешь редиректов. Поставь фиддлер это для таких целей лучше файрбёрда.

Автор: DenWPF 4.1.2010, 12:58
ещё бы узнать как работать с ним.. ладно будемс читать.

Автор: diadiavova 4.1.2010, 13:01
Штука очень мощная, и плагины под неё писать можно(что приятно - на шарпе) и скрипты, то есть можно настроить под любые задачи.

Автор: gradvinn 5.1.2010, 09:35
Цитата(diadiavova @ 3.1.2010,  12:13)
Тогда нужно начинать с простейших вещей. Например отсюда
http://www.rsdn.ru/article/inet/httpweb.xml

Этот слишком простой пример давно не работает. Яндек пытается вычислить бот используя около 5 редиректов(точно не помню, давно писал бот)

HttpWebRequest и HttpWebResponse использовал только до тех пор пока они работают, а дальше просто всё делал ручками: получал ответ сервера, парсил его, записывал свои заголовки и отправлял.  smile  Если сервис будет работать с с браузером у которого отключены Java-скрипты, то лучше так и сделать. Это может упростить задачу.

Такой методикой я и пользоватлся, отключил скрипты у браузера, делал запрос к яндексу, и потом всё это анализировал в фидлере.


Автор: Dobermann 5.1.2010, 10:45
И вес таки не понятно, что ТС нужно?

Автор: DenWPF 5.1.2010, 12:11
что такое ТС ?

ну вот пытаюсь так и делать...анализирую, но блин что то не получается=(

Автор: diadiavova 5.1.2010, 13:13
Цитата(gradvinn @  5.1.2010,  09:35 Найти цитируемый пост)
Этот слишком простой пример давно не работает. Яндек пытается вычислить бот используя около 5 редиректов(точно не помню, давно писал бот)

А почему обязательно надо копипастить? Там ведь всё подробно описано.

Автор: DenWPF 5.1.2010, 13:17
та я вроде все делаю как надо. но запрос не тот =(

Автор: DenWPF 5.1.2010, 13:36
вот взял другой сайт, почти проблем не было.
ну в конце концов сделал. а этот не как.

Автор: Dobermann 5.1.2010, 18:07
Блин, ты отправляешь пост-запросом это : "http://lkjhhg.forum24.ru/?filenumber=&message=qqqqqq22222222222222qqqqqqqqqq=&msgid&newreg=on&nick=zxczxc&only_new_re=0&pass=zxc&razdel=0&start=0&start_page_re=0&statisc=0`1280`32`no`no`no`no`no&work=2"
С ГЕТом не перепутал часом?!!

Автор: DenWPF 5.1.2010, 18:20
эм, ну там в запросе четко пост написан...как в посте передавать параметры?

Автор: DenWPF 5.1.2010, 19:33
вообщем всм спасибо и особено Доберману.
и не надо было так долго мусолить =)

Код

string lcUrl = "http://www.west-wind.com/testpage.wwd";

HttpWebRequest loHttp = 

   (HttpWebRequest) WebRequest.Create(lcUrl);

 

// *** Send any POST data

string lcPostData = 

   "Name=" + HttpUtility.UrlEncode("Rick Strahl") + 

   "&Company=" + HttpUtility.UrlEncode("West Wind ");

 

loHttp.Method="POST";

byte [] lbPostBuffer = System.Text.           

                       Encoding.GetEncoding(1252).GetBytes(lcPostData);

loHttp.ContentLength = lbPostBuffer.Length;

 

Stream loPostData = loHttp.GetRequestStream();

loPostData.Write(lbPostBuffer,0,lbPostBuffer.Length);

loPostData.Close();

 

HttpWebResponse loWebResponse = (HttpWebResponse) loHttp.GetResponse();

 

Encoding enc = System.Text.Encoding.GetEncoding(1252);

 

StreamReader loResponseStream = 

   new StreamReader(loWebResponse.GetResponseStream(),enc);

 

string lcHtml = loResponseStream.ReadToEnd();

 

loWebResponse.Close();

loResponseStream.Close();

Автор: Dobermann 6.1.2010, 00:46
Цитата(DenWPF @  5.1.2010,  19:33 Найти цитируемый пост)
вообщем всм спасибо и особено Доберману.
и не надо было так долго мусолить =)

 smile  smile  smile 

Автор: DenWPF 6.1.2010, 01:04
эмс, тут у меня такой трабл, вообще там в параметрах передается сообщение и если я передаю там "=" то он его считает за какой то параметр вообще дальше сообщение не отображает.

Автор: Dobermann 6.1.2010, 01:18
@"string" ?!

Автор: DenWPF 6.1.2010, 01:30
неа, не помогло=(
я так делаю
            mess = "dasdasdasda";
            mess += @"=dasdasdasd";

Автор: Dobermann 6.1.2010, 01:56
покажи саму ошибку и строку

Автор: DenWPF 6.1.2010, 11:21
я в параметры передаю message=тексттексттексттекст=текст2 
так вот в сообщение на сайте будет только "тексттексттексттекст" а равно и после равно уже не чего не показывает.

Автор: GavriKos 6.1.2010, 12:50
А енкодинг там часом не нужен? Фидлер в руки и эмулируй такой же запрос! Возможно сайт спецсимволы преобразует по какому нить алгоритму.

Автор: DenWPF 6.1.2010, 13:21
ага, юникод, только как строку перевести =( 

Автор: GavriKos 6.1.2010, 13:24
1) Поищи я тут сам задавал где то такой же вопрос ;-) Есть класс который именно хттпшные адреса енкодит
2) У сайта может быть свой енкодинг ;-) Для мейл.ру так и не получилось подобрать енкодер - пришлось самому написать.

Автор: DenWPF 6.1.2010, 13:45
эй эй, мне это не нравится...
Content-Type: text/html; charset=windows-1251
Transfer-Encoding: chunked
Content-Encoding: gzip

равно переводится как %3D

а взял равно и просто заменил и не мучаюсь)

Автор: Dobermann 6.1.2010, 16:17
Ну а чтобы этого не делать, то нужно работать так:
Код

HttpWebRequest.GetRequestStream().Write(Encoding.GetEncoding(1251).GetBytes(param), 0, param.Length);
где 
string param = string.Format("email={0}&pass={1}&expire=1", HttpUtility.UrlEncode("мыло"), HttpUtility.UrlEncode("pass"));

Автор: DenWPF 6.1.2010, 16:30
чорд...к черту предрастуки...
доберман выходи за меня =))))

спасибо =)

Автор: Dobermann 6.1.2010, 17:00
Цитата(DenWPF @  6.1.2010,  16:30 Найти цитируемый пост)
доберман выходи за меня =))))

xD посмотрим

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)