Почему перестал работать код для получения котировок валют от цб рф, ссылаясь на «failed to open stream: Redirection limit reached, aborting»?
Не ЦБ единым... Есть прокси для получения курсов ЦБ РФ без лишних заморочек, во всевозможных форматах.https://www.cbr-xml-daily.ru/
https://www.cbr-xml-daily.ru/daily.xml
https://www.cbr-xml-daily.ru/daily_utf8.xml
https://www.cbr-xml-daily.ru/daily_eng.xml
https://www.cbr-xml-daily.ru/daily_eng_utf8.xml
https://www.cbr-xml-daily.ru/daily_json.js
https://www.cbr-xml-daily.ru/daily_jsonp.js
Работает так: (пример с сайта)<div id="USD">Доллар США $ — 00,0000 руб.</div>
<div id="EUR">Евро € — 00,0000 руб.</div>

<script>
function CBR_XML_Daily_Ru(rates) {
	var USDrate = rates.Valute.USD.Value.toFixed(4).replace('.', ',');
	var USD = document.getElementById('USD');
	USD.innerHTML = USD.innerHTML.replace('00,0000', USDrate);

	var EURrate = rates.Valute.EUR.Value.toFixed(4).replace('.', ',');
	var EUR = document.getElementById('EUR');
	EUR.innerHTML = EUR.innerHTML.replace('00,0000', EURrate);
}
</script>
<script src="https://www.cbr-xml-daily.ru/daily_jsonp.js"></script>
Огромное преимущество перед выкачкой курсов в XML в том что ничего не нужно качать и парсить на стороне сервера. Ничего такого, что в другом ответе, делать не нужно. Страницы открываются много шустрее.
function parseResponse( $response )
{
	$response_parts = explode( "\r\n\r\n", $response, 2 );
	$response = array();
	$cookie = array();
	
	$response['header'] = explode( "\r\n", $response_parts[0] );
	
	if ( preg_match_all( '/Set-Cookie: (.*?)=(.*?)(\n|;)/i', $response_parts[0], $matches ) ) {
		if ( !empty( $matches ) ) {
			foreach ( $matches[1] as $key => $value ) {
				$cookie[] = $value . '=' . $matches[2][$key] . ';';
			}
			$response['cookie'] = $cookie;
		}
	}
	$response['body'] = $response_parts[1];
	return $response;
}

$url = 'http://www.cbr.ru/scripts/XML_daily.asp?date_req=10/12/2013';
$request = curl_init( $url );
$options = array(
	CURLOPT_HEADER => true,
    CURLOPT_NOBODY => false,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_SSL_VERIFYPEER => false,
	CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0',
);
curl_setopt_array( $request, $options );
$result = curl_exec( $request );
if ( $result ) {
	$info = curl_getinfo( $request );
	$response = parseResponse( $result );
	$response['info'] = $info;
} else {
	$response = array(
		'number' => curl_errno( $request ),
		'error' => curl_error( $request ),
		'info' => curl_getinfo( $request )
	);
}
curl_close( $request );

print_r( $response );
вот такой код дает представление о происходящем.
после первой проверки меня видимо тоже забанили, но в браузере ссылка открывается. курл же отпинывается с 0 кодом. после добавления юзерагента стало редиректить на ту же страницу и так до бесконечности.