Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

[Delphi] Парсер odnoklassniki, проблема с TIdHTTP

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> [Delphi] Парсер odnoklassniki, проблема с TIdHTTP
Имя
Сообщение << Старые топики   Новые топики >>
[Delphi] Парсер odnoklassniki, проблема с TIdHTTP - 2012-02-01 22:22:19.230000   
GangstaLC

Сообщений: 71
Оценки: 0
Присоединился: 2009-10-11 20:55:22.796666
Пишу парсер друзей из odnoklassniki.ru. Суть - программа залогинивается под аккаунтом, потом в отдельном потоке из списка с ID'ами пользователей выводит в текстовое поле ID'ы их друзей.  Так вот, через штук 5-7 пропарсенных профилей GET запрос начинает возвращать только пустоту (''), (когда возвращает пустоту - ответ сервера "HTTP/1.1 204 No Content")  или просто поток завершается. Помогите выявить проблему. Сразу извинюсь, код местами безобразный т.к. программа на стадии отладки.
Delphi 7, Indy 9.

Исходники: http://rghost.ru/36286274
Post #: 1
RE: [Delphi] Парсер odnoklassniki, проблема с TIdHTTP - 2012-02-02 18:09:33.993333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
может там аякс юзается и надо другие запросы?
Post #: 2
RE: [Delphi] Парсер odnoklassniki, проблема с TIdHTTP - 2012-02-02 18:37:19.620000   
GangstaLC

Сообщений: 71
Оценки: 0
Присоединился: 2009-10-11 20:55:22.796666
У меня есть функция - получить друзей человека по ссылке на профиль (/profile/ID), у нее по сути алгоритм такой:
1) Заходит на страницу друзей человека (http://odnoklassniki.ru/ID человека/friends)
2) Парсит страницу, сохраняет кол-во друзей в переменную
3) Разбив кол-во друзей на страницы в цикле запросами получает ссылки на друзей (ajax)

Так вот в действии 3) там используюется именно ajax, причем программа получает по этому запросу данные, а в шаге 1) простой GET запрос (http://odnoklassniki.ru/ID человека/friends), так вот "HTTP/1.1 204 No Content" возвращает еще запрос в шаге 1), а там (повторюсь) никакой не ajax. Есть еще какие идеи в чем проблема? Может в самой Indy проблема какая?
P.S. 10-15 профилей первых проходят парсинг, а вот дальше такая проблема проявляется.
Post #: 3
RE: [Delphi] Парсер odnoklassniki, проблема с TIdHTTP - 2012-02-03 02:00:28.940000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
ну хз… максимум что могу посоветовать - сравнивай сниффером запросы. может кукисы или какая-нить ещё информация в input-ах левая должна быть
Post #: 4
RE: [Delphi] Парсер odnoklassniki, проблема с TIdHTTP - 2012-02-03 08:43:17.593333   
GangstaLC

Сообщений: 71
Оценки: 0
Присоединился: 2009-10-11 20:55:22.796666
Если должна быть еще какая то информация, почему первые 10-15 запросов проходят на ура? Чтож, попробую без indy реализовать.
Post #: 5
RE: [Delphi] Парсер odnoklassniki, проблема с TIdHTTP - 2012-02-03 09:46:13.456666   
Barkass$

Сообщений: 1854
Оценки: 40
Присоединился: 2008-11-11 12:19:45.216666
Юзай Синапс. Подобных проблем с ним не наблюдал.
Post #: 6
RE: [Delphi] Парсер odnoklassniki, проблема с TIdHTTP - 2012-02-03 13:54:41.790000   
GangstaLC

Сообщений: 71
Оценки: 0
Присоединился: 2009-10-11 20:55:22.796666
Его как раз и хотел использовать; как перенесу на него - по результату отпишусь.
Post #: 7
RE: [Delphi] Парсер odnoklassniki, проблема с TIdHTTP - 2012-02-03 16:45:23.463333   
Barkass$

Сообщений: 1854
Оценки: 40
Присоединился: 2008-11-11 12:19:45.216666
Индейцев давно уже обсерают не скрывая этого. Они скажем так, по свойму хороши. В своё время они мне дали хорошую практику. Но лично в своих программах, я стараюсь их не использовать, ибо зачастую в них всплывают непредвиденные проблемы, а так же они не имеют встроенных возможностей ввиде многопоточности, прокси и т.д. Даже если брать просто подключение через SSL средствами idHTTP - вылезает геморой, требующий стабильные библиотеки openssl, с которыми опять же у инди могут возникнуть куча гемороя. Синапс хоть сейчас и не развивается (насколько я знаю), зато работает в полне адеватно, распростроняется бесплатно, возможностей на порядок больше чем у инди. Поэтому попробуй использовать его. Если будут вопросы, обращайся.
Post #: 8
RE: [Delphi] Парсер odnoklassniki, проблема с TIdHTTP - 2012-02-03 18:12:10.346666   
GangstaLC

Сообщений: 71
Оценки: 0
Присоединился: 2009-10-11 20:55:22.796666
Заинтересовала пара моментов.
quote:

ORIGINAL: Barkass$
а так же они не имеют встроенных возможностей ввиде многопоточности

У меня приложение по сути: есть TStringList из ссылок, действуют несколько потоков, каждый из них берет ссылку из списка, парсит ее, выводит информацию, и соответственно нужно синхронизировать чтобы потоки не взяли одну и ту же ссылку. Я думаю с TThread это реализовать. А что за многопоточность в synapse?

quote:

ORIGINAL: Barkass$
Даже если брать просто подключение через SSL средствами idHTTP - вылезает геморой, требующий стабильные библиотеки openssl, с которыми опять же у инди могут возникнуть куча гемороя.

C SSL не работал, но как помню для TIdHTTP нужно было подключать 2 либы. Как SSL реализуется в synapse? Нужно ли подключать динамические библиотеки?
Post #: 9
RE: [Delphi] Парсер odnoklassniki, проблема с TIdHTTP - 2012-02-03 19:27:45.840000   
Barkass$

Сообщений: 1854
Оценки: 40
Присоединился: 2008-11-11 12:19:45.216666
В синапсе (если мне не изменяет память), есть готовая функция, которой можно реализовать многопоточность, называется она
m_oFastSender (лучше покапаться в исходниках). Вообще TStringList в связке с потоками будет достаточно. TThread не советую, тем более синхронизацию, ибо она только замедлит работоспособность программы.

К синапсу тоже нужно подключать 2 библиотеки для работы с SSL. libeay32 и ssleay32. При этом можно тупо прописать в uses openssl и все будет работать сразу. К idHttp SSL я не подключал, но когда она потребовалась для idSmtp, т.е. для отправки почты, вылезло Очень много гемороя. То библиотеки ему не нравились, то авторизацию не хотел проходить…
Post #: 10
RE: [Delphi] Парсер odnoklassniki, проблема с TIdHTTP - 2012-02-03 20:17:15.513333   
GangstaLC

Сообщений: 71
Оценки: 0
Присоединился: 2009-10-11 20:55:22.796666
Спасибо за помощь. С SSL разобрался, все оказалось на удивление просто. А насчет потоков - т.е. писать на чистом API?
Отхожу от темы, но все же, как строить архитектуру взаимодействия с потоками? К примеру: Класс, в нем массив указателей на потоки. При запуске опции программы - должны создаться потоки по указателям в массиве, и из списка ссылок (список находится в классе где объявлен этот же массив потоков) должны пройти по каждой, но не должны проходить по одинаковым (т.е. многопоточность тут для увеличения производительности переходов по ссылкам), так как каждому потоку получать ссылку из списка и не брать одинаковых? (Есть идея - при создании потока передавать указатель на класс со списком, а там уже не допускать взятия по одной ссылке несколькими потоками, в правильную ли сторону думаю?)
Post #: 11
RE: [Delphi] Парсер odnoklassniki, проблема с TIdHTTP - 2012-02-06 17:16:17.240000   
GangstaLC

Сообщений: 71
Оценки: 0
Присоединился: 2009-10-11 20:55:22.796666
Перевел на Synapse, ошибки улетучились. Спасибо всем за помощь.
Post #: 12
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> [Delphi] Парсер odnoklassniki, проблема с TIdHTTP







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.