powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Curl, Post запрос
13 сообщений из 13, страница 1 из 1
Curl, Post запрос
    #38005679
CurlManiac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Стоит задача отправить 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
Curl, Post запрос
    #38005786
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вы поглядите что значит 302
...
Рейтинг: 0 / 0
Curl, Post запрос
    #38005787
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CURLOPT_FOLLOWLOCATION - числовой параметр, указывающий максимлаьное количество возможных редиректов
...
Рейтинг: 0 / 0
Curl, Post запрос
    #38005795
CurlManiac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я знаю что такое 302 ошибка.

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

Сайт говорит 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
Curl, Post запрос
    #38007042
Шогал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С выключеным яваскриптом сайт работает нормально? Может быть там хитропопый скрипт, выставляющий куки.
...
Рейтинг: 0 / 0
Curl, Post запрос
    #38007057
CurlManiac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, это проверил еще в самом начале. К тому же файл содержит куки - значит запись удалась?
...
Рейтинг: 0 / 0
Curl, Post запрос
    #38007079
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну нет, они там спонтанно возникли)
...
Рейтинг: 0 / 0
Curl, Post запрос
    #38007237
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CurlManiacфайл содержит куки - значит запись удалась?А что в куке? То же самое, что при нормальной работе в обычном браузере или чего другое?
...
Рейтинг: 0 / 0
Curl, Post запрос
    #38007305
CurlManiac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkleCurlManiacфайл содержит куки - значит запись удалась?А что в куке? То же самое, что при нормальной работе в обычном браузере или чего другое?
Да, похоже на нормальные. Единственное - сайт туда пишет хэш, он, естественно другой

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


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