Вы читаете RAW-данные, возвращаемые запросом, вы проверяете заголовок (-и) перенаправления, выбираете связанные URL-адреса и делаете новое получение с этим URL-адресом (сухой, полоскание, повтор). Так просто ...
В качестве альтернативы вы можете перестать быть таким ленивым, посмотрите документацию curl_setopt в справочном руководстве по PHP и найдите решения - прочитав комментарии внизу страницы - о том, как решить эту проблему, конечно.