Я пытаюсь расшифровать веб-страницу www.dealstan.com, используя CURL, используя приведенный ниже код:
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); // Define target site curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // Return page in string curl_setopt($cr, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.3 Safari/533.2'); curl_setopt($ch, CURLOPT_ENCODING , "gzip"); curl_setopt($ch, CURLOPT_TIMEOUT,5); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); // Follow redirects $return = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch); $html = str_get_html("$return"); echo $html;
но, он показывает некоторый банальный charater
« } {w 6 9 X n ……….» для примерно 100 строк.
Я попытался найти ответ в hurl.it, нашел один интересный момент, похоже, что html кодируется дважды (просто предположение, основанное на ответе)
Найдите ответ ниже: GET http://www.dealstan.com/
200 OK 18.87 kB 490 ms Посмотреть запрос Посмотреть ответ HEADERS
Cache-Control: max-age = 0, no-cache
Cf-Ray: 18be7f54f8d80f1b-IAD
Подключение: сохранить жизнь
Content-Encoding: gzip, gzip ==============>? подозревая это, кто-нибудь знает об этом?
Content-Type: text / html; кодировка = UTF-8
Дата: ср, 19 ноября 2014 18:33:39 GMT
Сервер: cloudflare-nginx
Set-Cookie: __cfduid = d1cff1e3134c5f32d2bddc10207bae0681416422019; expires = Thu, 19-ноя-15 18:33:39 GMT; Путь = /; домен = .dealstan.com; HttpOnly
Передача-кодирование: chunked
Vary: Accept-Encoding
X-Page-Скорость: 1.8.31.2-3973
X-Pingback: http://www.dealstan.com/xmlrpc.php
X-Powered-By: HHVM / 3.2.0 BODY view raw
H4sIAAAAAAAAA5V8Q5AoWrBk27Ztu / u2bdu2bdu2bdu2bds2583f / pjFVOQqozZnUxkVJ7PwoyAA / qeAb3y83LbYHs / 3Hv79wKm / 2N5cZyJVtCWu1xyteyzLNqYuWbdtHeELCyIZRRp / 1Fe7es3 + wL3Vfb
любой знает, как декодировать ответ с заголовком «Content-Encoding: gzip, gzip»,
Этот сайт правильно загружается в firefox, chrome и т. Д., Но я не могу декодировать с помощью CURL.
Пожалуйста, помогите мне расшифровать эту проблему?
Вы можете декодировать его, обрезая заголовки и используя gzinflate.
$url = "http://www.dealstan.com" $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); // Define target site curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // Return page in string curl_setopt($cr, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.3 Safari/533.2'); curl_setopt($ch, CURLOPT_ENCODING , "gzip"); curl_setopt($ch, CURLOPT_TIMEOUT,5); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); // Follow redirects $return = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch); $return = gzinflate(substr($return, 10)); print_r($return);