![]() |
Delphi
как сграбить на сайте vkontakte.ru id страницы?
|
Для начала сделай авторизацию и покажи, что у тебя получилось
|
Пример реализации авторизации на сервисе VKontakte.ru с использованием компонента Indy 10
после правильной авторизации должен вывести id страницы и имя Код:
unit Unit1; |
в топку инди
|
RedFern.89, ваши предложения!
|
Цитата:
|
Цитата:
ЗЫ Сам на данный момент использую другую либу, но все равно считаю инди хорошой либой для некриворуких |
function TForm1.Pars(T_, ForS, _T: string): string;
var a, b: integer; begin Result := ''; if (T_ = '') or (ForS = '') or (_T = '') then Exit; a := Pos(T_, ForS); if a = 0 then Exit else a := a + Length(T_); ForS := Copy(ForS, a, Length(ForS) - a + 1); b := Pos(_T, ForS); if b > 0 then Result := Copy(ForS, 1, b - 1); var Domen:string; begin Domen :=Form1.Idhttp1.Get('http://vkontakte.ru/settings.php'); Domen:=Pars('<div class="labeled_text" id="page_url">http://vkontakte.ru/',Domen,'</div>'); ShowMessage(Domen); |
сам лично исправлял баги в инди и юзал их во многих приложениях, пока не зе*ало. юзайте wininet или сокеты))
|
Цитата:
/feed2.php |
Цитата:
А разработчик инди в сетевом программировании не один десяток лет, и в этом шарит куда побольше тебя. А у тебя же чтобы написать толковый http клиент (с поддержкой SSl, socks, сжатием траффика, обработкой кукисов и т.п. и т.д.) на сокетах уйдет не один месяц работы |
Цитата:
В инди есть одна херня - он ООПный и юзает VCL А для сетевых прог - это ужас. В WinInet тоже есть кучка своих багов (к примеру если юзать FTP из него, то рано или поздно прога вылетит, если не будешь обрабатывать эксепшены. Причем вылетает по адресам именно WinInet) Сокеты - SSL привентить туда - 10 строк кода. Поддержка Socks4/5 (без авторизации) тож строк 10 для каждого типа. Сжатия - нах? Тупо не посылай в заголовке поддержку gzip. Куки - тоже довольно простая вешь, которая не требует ничего особенного, причем отпарсить их не составит труда. И спамер можно написать за 2-3 дня максимум. Если учесть что 1 день полностью потратить на реализацию работы с сокетами. Зато производительность будет большая и памяти хавать будет на порядок меньше. Да и вообще Indy - это Delphi. А Делви для чегото долго работающего - мало подходит. А вот Си самый раз выходит. Да и размер будет довольно маленький. Многопоточный коннект бек прокси поддерживающий http(GET, POST, CONNECT + множественные запросы в одной сессии), Socks4, Socks5 - это всё 5 кб без сжатия выходит на Си. Делфи курит в сторонке. А GUI быстро на диалогах модно написать и будет тебе счастье. |
Цитата:
Цитата:
|
slesh, написав "ты" я явно указал к кому я обращаюсь. Ты то может и напишешь, но вот насчет него я очень сомневаюсь. Достаточно посмотреть сколько тем открыто по одним и тем же вопросам.
Сжатие траффика - нужно. Представь ты пишешь спамилку для сайта. Чтобы отправить одно сообщение тебе надо получить 20-кбайтовую страницу, чтобы получить и вычислить параметры, имитируя яваскрипт (сейчас на многих порталах такая "защита"). Имея ограничение 100 кб/сек без сжатия максимум можно отправить 100/20=5 сообщений в секунду. Со сжатием выйдет примерно 100/8=12 сообщений в секунду. Си и дельфи...Это все понятно что на низком уровне надо работать на винапи и никак по другому. Неужели ты подумал что я собирался писать ДДос бота на инди? но вот в прикладном ПО профит от сокетов не очевиден. |
и чо за холивар!?
|
Цитата:
|
Размер.. К чему за его уменьшением гнаться в наше время? Когда у большинства огромные объёмы памяти, процессоры по 4 ядра...
Что касается Indy, хороший пакет контролов, но сам всё же учусь работать с сокетами. По сути инди тоже "сокеты" только в красивой обвёртке. Сорри за офф. топ. |
CURL + GLIB у меня под вендой могу сказать одно они рулят :) и исходники открыты что то новое осваиваю из либ и тут же сорцы смотрю понимаеш на 200 % что пишеш + профит :)
ну и очень хороший фундамент для ядра программы в GLIB содержится :) а CURL вообще прелесть пять минут и регистрация где надо с куками и всем прочим :) |
2 GhostOnline в сокетах есть маааленькое приимущество.
Когда допустим тебе нужны куки то незачем тебе отгружать всю страницу целеком, достаточно тока хидер скачать и можно разрывать коннект. Кстати, я видел ДДОС бота на Инди ) |
ну не только на сокетах можно HEAD выполнить
curl_easy_setopt(easy, CURLOPT_NOBODY, TRUE); //... юзает метод HEAD странно если в indy этого нет :) |
Ну вообще то в инди есть событие OnWork которое возникает каждый раз при получении N байт. Значение N выставляет программист. А при обработке события просто вызвать Disсonnect.
И HEAD в инди тоже есть конечно. Косяк в инди - синхронный режим А вообще - ICS рулит :) можно прекрасно обходится без потоков - экономия памяти и процессорного времени на переключении контекста, и не надо синхронизировать |
| Время: 03:32 |