|
| Дата |
|
USD/RUB | 93.4409 | BTC/USD | 64104.4306 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
10.05.2011, 07:40
|
#1
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
|
Curl + Cookie вопрос
никак понять не могу, как курл оперирует с куками:
как сбросить все куки у текущего хендлера и дальше продолжить запросы? CURLOPT_COOKIESESSION не помогает
PHP код:
<?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://www.google.ru/'); curl_setopt($ch, CURLOPT_VERBOSE, TRUE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_COOKIEJAR, '-'); curl_exec($ch); // гугл поставит куку curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE); // попытка стереть куки curl_exec($ch); // обращаемся к гугл с предыдущими куками, которые так и не стерлись ?>
Вобщем, иногда нужно сбрасывать куки в открытом хендлере, как?
|
|
|
10.05.2011, 09:07
|
#2
|
:(
Регистрация: 25.11.2008
Сообщений: 759
Бабло: $94392
|
Код:
curl_setopt($ch, CURLOPT_COOKIEFILE, 'file.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, 'file.txt');
и очищаем файл с cookies - file.txt
Код:
$fp = fopen("file.txt","w");
fwrite($fp, "");
fclose($fp);
__________________
Знать путь и пройти его — не одно и то же. Pharmcash & PharmcashUSA - знаем, проходили... Лидеры в фарме
|
|
|
10.05.2011, 09:23
|
#3
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
ТС -->
|
ТС
y4b53, ну согласись костыль? не должен такой функционал завязываться на фс
на сях есть константа CURLOPT_COOKIELIST - ее установкой можно стереть все куки в памяти, а в пхп ее нет, вот думал может куки-сессиями как-то оно рулится
пошел курить сорсы курла
|
|
|
10.05.2011, 09:27
|
#4
|
кодер-энтузиаст
Регистрация: 04.04.2007
Адрес: Джамайка
Сообщений: 3,381
Бабло: $447150
|
Можно тупо курл гасить - curl_close(); Ты ведь, надеюсь, через либу с курлом работаешь, не сразу в главном коде эти curl_setopt делаешь ? Сделать класс с хранимыми куками, рефером и прочим, и работать через него. И каждый запрос инитить заново.
Цитата:
и очищаем файл с cookies - file.txt
|
CURLOPT_COOKIEJAR сбрасывает куки в файл после curl_close(), так что тут эта очистка совершенно бесполезна.
|
|
|
10.05.2011, 09:34
|
#5
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
ТС -->
|
ТС
Цитата:
Сообщение от medar
Можно тупо курл гасить - curl_close();
|
да, так работает
но зачем его гасить, если не нужно гасить
сейчас смотрю pecl расширение pecl_http там есть HttpRequest::resetCookies - вот оно вроде не гасит и куки сбрасывает, как раз этой константой CURLOPT_COOKIELIST, если я правильно понял
Цитата:
Можно тупо курл гасить - curl_close(); Ты ведь, надеюсь, через либу с курлом работаешь, не сразу в главном коде эти curl_setopt делаешь ? Сделать класс с хранимыми куками, рефером и прочим, и работать через него. И каждый запрос инитить заново.
|
угу, своя либа. Но подумываю взять общественную обертку какую-нибудь. Не подскажешь?
|
|
|
10.05.2011, 09:46
|
#6
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
ТС -->
|
ТС
это у меня либа типа серверного браузера, ходит по инету мультипоточно.
и вот хочу сделать такую фичу как в браузере "редактор кук", чтобы чистить куки налету для некоторых запросов.
Ради этого пересоздавать хендлер курла - ну как-то не логично
ps ну или думаю отказаться от своего велосипеда и пересесть на общественные варианты, но тогда какие? js не нужен, но нужен рендеринг css
|
|
|
10.05.2011, 11:06
|
#7
|
кодер-энтузиаст
Регистрация: 04.04.2007
Адрес: Джамайка
Сообщений: 3,381
Бабло: $447150
|
Цитата:
Сообщение от chesser
сейчас смотрю pecl расширение pecl_http там есть HttpRequest::resetCookies - вот оно вроде не гасит и куки сбрасывает, как раз этой константой CURLOPT_COOKIELIST, если я правильно понял
|
По идее, все CURLOPT_ - это просто константы, т.е. просто числа. Курл - либа сишная, на вход принимает эти управляющие команды, от языка вообще не зависит. Надо узнать, какое числовое значение стоит за CURLOPT_COOKIELIST и подать его на curl_setopt().
Цитата:
Сообщение от chesser
угу, своя либа. Но подумываю взять общественную обертку какую-нибудь. Не подскажешь?
|
У меня тоже своя, надерганная из разных источников. Наиболее актуальные скрипты сейчас на гитхабе, попробуй там поискать.
Цитата:
Сообщение от chesser
Ради этого пересоздавать хендлер курла - ну как-то не логично
|
Да, не логично, но если так работает правильно, а "логично" - неправильно, то надо юзать нелогичный вариант. Все равно основное время тратится на ожидание ответа от удаленного сервера, создание хендлера по сравнению с этим - доли процента.
|
|
|
10.05.2011, 12:20
|
#8
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
ТС -->
|
ТС
Цитата:
Сообщение от medar
По идее, все CURLOPT_ - это просто константы, т.е. просто числа. Курл - либа сишная, на вход принимает эти управляющие команды, от языка вообще не зависит. Надо узнать, какое числовое значение стоит за CURLOPT_COOKIELIST и подать его на curl_setopt().
|
не, я исходники php-curl коннектора посмотрел - там хуй вместо CURLOPT_COOKIELIST
т.е. в libcurl функционал есть, а в php-шной версии пока нет
в принципе, можно и дописать, там будет php врапер на 10 строчек кода и все, потом пхп пересобрать и вперед
|
|
|
10.05.2011, 12:28
|
#9
|
Senior Member
Регистрация: 20.04.2008
Сообщений: 604
Бабло: $116367
|
Цитата:
Сообщение от y4b53
Код:
curl_setopt($ch, CURLOPT_COOKIEFILE, 'file.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, 'file.txt');
|
Вообще вымораживают эти опции, гораздо удобней юзать COOKIELIST, однако во всех манах, статьях, блогах, примерах стоят именно эти опции и новички юзают именно их.
Upd. Сори, не знал, что в пхп такой константы нет.
|
|
|
10.05.2011, 12:29
|
#10
|
Senior Member
Регистрация: 15.11.2008
Сообщений: 13,230
Бабло: $247845891
|
не понимаю в чем проблема удалить файл с куками
|
|
|
|