Как привязать куки к потоку?
-
Здравствуйте. Пытаюсь настроить многопоточный парсер ссылок. Нужно, чтобы каждый поток создавал для себя текстовый файл, в который сохранял куки, а потом читал из этого же файла. Короче, чтобы текстовый файл с куками был привязан к одному потоку, чтобы другие потоки его не использовали. Суть в том, что после ввода капчи, можно парсить примерно 7 страниц, а потом опять капча вылетает. Вот я и хочу, чтобы каждый поток отрабатывал примерно 7 ссылок, потом решал капчу, затем сохранял куки в свой текстовый файл, а новый запуск этого потока начинался с загрузки куки.
-
@Napulsnik Есть же возможность сохранять куки. Не пойму в чем проблема?
Сохраняем куки в переменную, затем ее в фаил . При запуске просто читаем фаил в переменную и загружаем из нее куки.
-
@Napulsnik Можно например устанавливать соответствие между потоком и файлом кук через базу данных
-
@Napulsnik Это вообще имеет смысл только, если на сайте авторизируешься.
-
@Napulsnik используй Получить номер потока, а дальше думаю все ясно.
-
@Denis_krsk В таком варианте все потоки будут писать в 1 файл.
-
@out А вот это интересно, спасибо.
-
@Napulsnik said in Как привязать куки к потоку?:
@Denis_krsk В таком варианте все потоки будут писать в 1 файл.
Дак файлы надо обзывать по имени логина или по любому другому уникальному идентификатору. Я вообще не вижу смысла привязывать куки к потокам. Куки нужны для сохранения авторизации между сессиями.
-
@Denis_krsk В моем случае, авторизация не нужна. Сайт дает парсить себя примерно до 7 ссылок без капчи для 1 браузера (1 куки). IP не играет роли. Значит мне нужно размножить эти браузеры до кол-ва потоков, и обязательно, чтобы каждый поток имел свои куки, чтобы он мог отработать все 7 ссылок.
-
@Napulsnik и если уж давать совет, как проще это сделать, без сохранений кук. То почему бы тебе попросту в одном потоке не парсить сразу 7 раз или сколько там дает. После каждого парсинга, проверяй появилась ли капча, если да, то завершай поток, а можно и не завершать , а снова решать капчу и парсить 7 раз. Но для оптимизации, лучше завершать (не делать бесконечный парсинг внутри одного потока)...
-
@out Вся проблема в том, что при первой загрузке страницы появляется капча. Т.е. запуск нового потока сразу сопровождается появлением капчи. Поэтому капчу нужно решить, сохранить куки, пропарсить 7 ссылок на этих куках, затем сново решить капчу и т.д.
-
@Napulsnik said in Как привязать куки к потоку?:
Поэтому капчу нужно решить, сохранить куки, пропарсить 7 ссылок на этих куках, затем сново решить капчу и т.д.
не знаю конечно же полной логики скрипта у вас, но не проще ли так:
1 капчу нужно решить
2 пропарсить 7 ссылокв одном потоке. Вроде очевидно, что это меньше телодвижений нужно.
Также еще нужно проверить, может если кукикасам дать полежать 30-60-120сек то сайт снова даст пропарсить 7 ссылок ,но уже без распознавания капчти.
А может тогда вообще нужно решить каптчу, выдерживать паузу в 2-10сек перед парсингом новых ссылок, тогда вообще капч не будет?
-
@out На счет телодвижений, там очень много страниц нужно парсить, поэтому я 30 потоков запускаю. Хотел бы больше, но система тормозить начинает. Всего нужно пройти около 60 млн. ссылок. В 1 поток - это очень долго. Да и в 30 потоков тоже. Вся проблема в капчах. Я facebook паршу. Там капча сложная. Xevil ее раза с 10 угадывает только.
-
@out А куки просят капчу несколько дней :-) Задержка не поможет.
-
@Napulsnik said in Как привязать куки к потоку?:
Всего нужно пройти около 60 млн. ссылок.
тогда я надеюсь ты парсишь через get запросы без браузера )? Ибо с браузером это ... вечность.
Без браузера на запросах комп вместо 30 потоков 300 потянет. Тебе нужно брать любые паблики и не паблики прокси и парсить на них. При этом сделать устойчивую систему отсеивания плохих прокси, проверку на то, нормально ли прогрузилась страница (на гет запросе, это куда проще, чем браузер прогружать).. Короче, что я могу сказать.. не по правильному пути ты идешь для парсинга 60КК. Меняй путь, пока не поздно )
-
@out Да, нужно углубиться в изучение BAS. Я только пару дней назад о нем узнал :-)