проблема с curl

1. Dmitry Kokorin (04.02.2015 / 20:07)
<?php

function getGame($patch){
    $appid = 30339;
    $ch = curl_init("http://".$patch."/?channelId=".$appid);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $game = curl_exec($ch); 
    curl_close($ch);
    echo $game;
}

?>

<div class="game"><?php getGame()?></div>

В итоге выводится пустой див
В чем косяк

2. ramzes (05.02.2015 / 02:21)
попробуй передать url xD

3. Александр (05.02.2015 / 02:28)
я так полагаю граб http://mobsee.ru/ делаешь?

4. Dmitry Kokorin (05.02.2015 / 02:58)
4. A.Great, нет это не граб, Это вывод игры

Добавлено через 05:26 сек.
3. ramzes,
<?php
function getGame($patch){
    $appid = 30339;
    $url = "http://".$patch."/?channelId=".$appid;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 3);
    $game = curl_exec($ch); 
    curl_close($ch);
    echo $game;
}



5. Nervous (05.02.2015 / 03:24)
A.Great (5 Февраля 2015 / 02:28)
я так полагаю граб http://mobsee.ru/ делаешь?
К чему ты написал свой пост?

6. Dmitry Kokorin (05.02.2015 / 03:45)
<?php
function getGame($patch){
    $appid = 30339;
    $url = "http://".$patch."/?channelId=".$appid;
    $ua = $_SERVER['HTTP_USER_AGENT'];
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $ua);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 3);
    $game = curl_exec($ch); 
    if($game === false){
        echo "cURL Error: ".curl_error($ch);
        curl_close($ch);
    }else{
        curl_close($ch);
        echo $game;
    }
}



Добавлено через 01:06 сек.
Warning: curl_setopt() [function.curl-setopt]: You must pass either an object or an array with the CURLOPT_HTTPHEADER, CURLOPT_QUOTE, CURLOPT_HTTP200ALIASES and CURLOPT_POSTQUOTE arguments in /home/w/window/flirtzona.ru/public_html/app/app.php on line 12
HTTP/1.1 302 Moved Temporarily Server: nginx/1.2.1 Date: Thu, 05 Feb 2015 00:43:32 GMT Content-Length: 0 Connection: keep-alive Location: http://naemniki.mobi/home/channelId/30339 1

7. Dmitry Kokorin (05.02.2015 / 04:18)
<?php
function getGame($patch){
    $appid = 30339;
    $url = "http://".$patch."/?channelId=".$appid;
    $ua = $_SERVER['HTTP_USER_AGENT'];
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_REFERER, $_SERVER['HTTP_HOST']);
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_TIMEOUT, 3);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    $game = curl_exec($ch); 
    if($game === false){
        echo '<div class="error">cURL Error: '.curl_error($ch).'</div>';
    }
    curl_close($ch);
    echo $game;
}

400 Bad Request

nginx/1.2.1
1

8. Dmitry Kokorin (05.02.2015 / 04:28)
зы: пробовал через file_get_contents() -> 400 bad request аналогично

9. Александр (05.02.2015 / 08:52)
Дай полную ссылку по которой обращаешься.

10. Александр (05.02.2015 / 09:17)
<?php
$curl = curl_init();  
curl_setopt($curl, CURLOPT_URL, 'http://naemniki.mobi/home/channelId/30339'); 
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_MAXREDIRS, 1);

echo $content = curl_exec($curl);
curl_close($curl);
?>
Выводит всю страницу все норм.

11. karpov-ml (05.02.2015 / 09:32)
там редирект и куку пишет. Возможно из-за этого что-то.

Добавлено через 06:00 сек.
function getGame($patch){ 
    $appid = 30339; 
    $url = "http://".$patch."/".$appid; 
    $ua = $_SERVER['HTTP_USER_AGENT']; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_REFERER, $_SERVER['HTTP_HOST']); 
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 3); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    $game = curl_exec($ch);  
    if($game === false){ 
        echo '<div class="error">cURL Error: '.curl_error($ch).'</div>'; 
    } 
    curl_close($ch); 
    echo $game; 
}

echo getGame('naemniki.mobi/landing/channelId')

так нормально работает

12. Dmitry Kokorin (05.02.2015 / 18:06)
12. karpov-ml, работает, но стили и картинки не выводит
Скрытый контент: Для выполнения действия необходимо авторизоваться!


13. Александр (05.02.2015 / 20:15)
DimmoS (5 Февраля 2015 / 18:06)
12. karpov-ml, работает, но стили и картинки не выводит
Скрытый контент: Для выполнения действия необходимо авторизоваться!
Ясен фиг что не будет выводить, нужно заменять пути на абсолютные с доменом игры то есть например ".style/style.css" на "game.ru/style/style.css"

Добавлено через 00:53 сек.
Не проще игру во фрейме открывать?

14. Dmitry Kokorin (05.02.2015 / 21:13)
14. klesh, не не проще, там счетчик мобтоп! Он траф пи**дит, сразу переадресации на мобтоп!

Добавлено через 01:04 сек.
кто в JS знает как отменить событие?

Добавлено через 02:03 сек.
14. klesh, зы: стили и картинки у меня на хосте есть все по полочкам

Добавлено через 02:57 сек.
интересно как на одноклассниках это реализовано?

15. Александр (05.02.2015 / 21:27)
15. DimmoS, на одноклассниках все просто API когда заходишь в игру через ОК передаются данные что то типа уникального ключа пользователя по которому создается для него аккаунт и проходит авторизация, а то что сверху и снизу полоски от ОК это уже сделано в самой игре и выводятся тем кто авторизован через ОК. А не curl'ом парсят страницы =)

Добавлено через 00:54 сек.
А еще для этого всего нужно скрипт игры настраивать под их API.

16. Dmitry Kokorin (05.02.2015 / 23:03)
я связввался с техподдержкой овермобаил они сказали что с их стороны не предусмотрено никакой интеграции,
с фреймом как-бы проблем нет, За исключением того что там у них стоит счетчик мобтоп, На нем javascript который перехватывает траф с фрейма! Если знает кто вариант отмены переадресации на js Плюсану!

17. karpov-ml (06.02.2015 / 01:35)
В упор не вижу у них мобтоп, возможно где-то установлен внутри уже...

Как вариант, скопипастить HTML страницу, если конечно я правильно понял, что нужна тебе только страница входа

Больше никак скорей всего, не граббер же писать всей игры

18. Антон (06.02.2015 / 06:16)
18. karpov-ml, вырезать скрипт, как же ещё.

19. Dmitry Kokorin (06.02.2015 / 08:57)
Ладно, пока ссылку поставил на игру.. Потом найду способ..

URL: https://visavi.net/topics/41966