Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Curl, Post запрос / 13 сообщений из 13, страница 1 из 1
19.10.2012, 13:17:38
    #38005679
CurlManiac
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Curl, Post запрос
Стоит задача отправить POST запрос с логином и паролем, т.е. авторизоваться.

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
$fields_string = '';
		$url = "https://...";

		$fields = array(
                ...
		);

		foreach ($fields as $key => $value) {
			$fields_string .= $key . '=' . $value . '&';
		}
		rtrim($fields_string, '&');

		$options = array(
			CURLOPT_POST => true,
			CURLOPT_RETURNTRANSFER => true,     // return web page
	        CURLOPT_HEADER         => false,    // don't return headers
	        CURLOPT_FOLLOWLOCATION => true,     // follow redirects
	        CURLOPT_ENCODING       => "",       // handle all encodings
	        CURLOPT_USERAGENT      => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:16.0) Gecko/20100101 Firefox/16.0 ", // who am i
	        CURLOPT_AUTOREFERER    => true,     // set referer on redirect
	        CURLOPT_CONNECTTIMEOUT => 120,      // timeout on connect
	        CURLOPT_TIMEOUT        => 120,      // timeout on response
	        CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects
	        CURLOPT_USERPWD	=> 'login:password',
	        CURLOPT_HTTPAUTH => CURLAUTH_BASIC
		);

		$ch = curl_init($url);
		$content = curl_exec($ch);
		$result = curl_getinfo($ch);
		$result['errno'] = curl_errno($ch);
		$result['errmsg'] = curl_error($ch);
		$result['content'] = $content;

		echo ('<p>');
		var_dump($result);
		echo ('</p>');



И получаю на вывод

outputarray(25) { ["url"]=> string(49) " https://..." ["content_type"]=> string(10) "text/plain" ["http_code"]=> int(302) ["header_size"]=> int(364) ["request_size"]=> int(79) ["filetime"]=> int(-1) ["ssl_verify_result"]=> int(0) ["redirect_count"]=> int(0) ["total_time"]=> float(1.8415) ["namelookup_time"]=> float(0.000783) ["connect_time"]=> float(0.441787) ["pretransfer_time"]=> float(1.380756) ["size_upload"]=> float(0) ["size_download"]=> float(0) ["speed_download"]=> float(0) ["speed_upload"]=> float(0) ["download_content_length"]=> float(0) ["upload_content_length"]=> float(0) ["starttransfer_time"]=> float(1.841483) ["redirect_time"]=> float(0) ["certinfo"]=> array(0) { } ["redirect_url"]=> string(40) " https://..." ["errno"]=> int(0) ["errmsg"]=> string(0) "" ["content"]=> bool(true) }

errno = 0, errmsg - пустой - значит ошибки нет? правда возврат 302 кода. Но почему тогда пустой content?
...
Рейтинг: 0 / 0
19.10.2012, 14:12:09
    #38005786
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Curl, Post запрос
А вы поглядите что значит 302
...
Рейтинг: 0 / 0
19.10.2012, 14:13:09
    #38005787
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Curl, Post запрос
CURLOPT_FOLLOWLOCATION - числовой параметр, указывающий максимлаьное количество возможных редиректов
...
Рейтинг: 0 / 0
19.10.2012, 14:17:38
    #38005795
CurlManiac
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Curl, Post запрос
Я знаю что такое 302 ошибка.

Непонятно что я должен делать. Ограничивать количество переходов?
...
Рейтинг: 0 / 0
19.10.2012, 14:42:32
    #38005819
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Curl, Post запрос
Количество переходов более одного, видимо. А у вас true, - что равно 1.
...
Рейтинг: 0 / 0
20.10.2012, 23:29:27
    #38006933
CurlManiac
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Curl, Post запрос
Спасибо, поправил. Следующий затык

Сайт говорит Cookies required.

Поправил код

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
$options = array(
		CURLOPT_URL => $loginUrl,
		CURLOPT_POST => true,
		CURLOPT_RETURNTRANSFER => true,
		//	CURLOPT_HEADER => false,
		CURLOPT_FOLLOWLOCATION => 10,
		//	CURLOPT_ENCODING => "",
		CURLOPT_USERAGENT => $userAgent,
		//	CURLOPT_AUTOREFERER => "",
		//	CURLOPT_CONNECTTIMEOUT => "",
		//	CURLOPT_TIMEOUT => "",
		//	CURLOPT_MAXREDIRS => 10,
		CURLOPT_USERPWD => $login . ":" . $password,
		CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
		CURLOPT_POSTFIELDS => $fieldsString,
		CURLOPT_COOKIEFILE => $cookieFile,
		CURLOPT_COOKIEJAR => $cookieFile
	);

	$c = curl_init();
	curl_setopt_array($c, $options);
	$content = curl_exec($c);
	$result = curl_getinfo($c);
	$result['errno'] = curl_errno($c);
	$result['errmsg'] = curl_error($c);
	$result['content'] = $content;

	echo('<p>');
	var_dump($result);
	echo('</p>');



$cookieFile доступен для записи, после выполнения скрипта в нем появляются значения (похожи на куки, полученные в результата авторизации через браузер). Однако в $content все равно встречается надпись Cookies required.
...
Рейтинг: 0 / 0
21.10.2012, 03:52:47
    #38007042
Шогал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Curl, Post запрос
С выключеным яваскриптом сайт работает нормально? Может быть там хитропопый скрипт, выставляющий куки.
...
Рейтинг: 0 / 0
21.10.2012, 08:29:56
    #38007057
CurlManiac
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Curl, Post запрос
Да, это проверил еще в самом начале. К тому же файл содержит куки - значит запись удалась?
...
Рейтинг: 0 / 0
21.10.2012, 10:59:42
    #38007079
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Curl, Post запрос
Ну нет, они там спонтанно возникли)
...
Рейтинг: 0 / 0
21.10.2012, 14:15:38
    #38007237
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Curl, Post запрос
CurlManiacфайл содержит куки - значит запись удалась?А что в куке? То же самое, что при нормальной работе в обычном браузере или чего другое?
...
Рейтинг: 0 / 0
21.10.2012, 16:12:19
    #38007305
CurlManiac
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Curl, Post запрос
vkleCurlManiacфайл содержит куки - значит запись удалась?А что в куке? То же самое, что при нормальной работе в обычном браузере или чего другое?
Да, похоже на нормальные. Единственное - сайт туда пишет хэш, он, естественно другой

HettНу нет, они там спонтанно возникли)
Кому-то смех))) Я имел в виду что сообщение "Cookie required" означает невозможно записи, а запись-то произошла.
...
Рейтинг: 0 / 0
21.10.2012, 17:49:00
    #38007357
Шогал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Curl, Post запрос
Попробуйте сначала сделать GET-запрос, а потом POST-запрос с полученными предыдущим запросам куками
...
Рейтинг: 0 / 0
21.10.2012, 18:07:37
    #38007377
CurlManiac
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Curl, Post запрос
ШогалПопробуйте сначала сделать GET-запрос, а потом POST-запрос с полученными предыдущим запросам куками
You made my day!!! Все сработало *shocked*. Спасибо
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Curl, Post запрос / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]