cURL самый гибкий вариант.
Вся информация о работе с cURL на PHP
тут.
Вот основной пример:
$file = curl_init('http://simple.ru');
// Настройка cURL до выполнении операции считывания
curl_setopt($file, CURLOPT_RETURNTRANSFER, true); // устанавливаем true, для получения содержимого в переменную, вместо вывода в браузер
curl_setopt($file, CURLOPT_HEADER, false); // отключить вывод заголовка в содержимом
curl_setopt($file, CURLOPT_FOLLOWLOCATION, true); // следовать редиректу, если сервер пытается перенаправить посетителя
curl_setopt($file, CURLOPT_MAXREDIRS, 5); // максимальное кол-во редиректов
curl_setopt($file, CURLOPT_USERAGENT,
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.130 Safari/537.36'); // информация о браузере
curl_setopt($curl, CURLOPT_POST, true); // включаем POST передачу данных
curl_setopt($curl, CURLOPT_POSTFIELDS, "a=4&b=7"); // указываем POST данные
// Выполнение операции считывания и получение результата
$data = curl_exec($file); // получаем содержимое (если страница - html-код, если картинка - код картинки и т.п.)
$code = curl_getinfo($file, CURLINFO_HTTP_CODE); // получаем код ответа сервера (200, 500 и др.)
$type = curl_getinfo($file, CURLINFO_CONTENT_TYPE); // получает тип передаваемого содержимого (text/html, jpeg/image и др.)
curl_close($file);