Curl. Один запрос, а URL разные

Discussion in 'PHP' started by Seganapa, 19 Jun 2012.

  1. Seganapa

    Seganapa New Member

    Joined:
    8 Jun 2012
    Messages:
    74
    Likes Received:
    0
    Reputations:
    0
    Это я понимаю, а зачем и что мы ищем например в редиректе???
     
    #21 Seganapa, 21 Jun 2012
    Last edited: 22 Jun 2012
  2. slider

    slider Reservists Of Antichat

    Joined:
    4 Sep 2005
    Messages:
    501
    Likes Received:
    711
    Reputations:
    748
    >Пишу небольшой скриптик для игры Grepolis.

    Ты пишешь скрипт, или нет!? Тебе дали боевой пример.. включай извилины
     
  3. Seganapa

    Seganapa New Member

    Joined:
    8 Jun 2012
    Messages:
    74
    Likes Received:
    0
    Reputations:
    0
    Ребята, ну помогите еще разок...

    Мне нужно отправить Post запрос, он выглядит так (как я думаю):

    requester ('http://ru11.grepolis.com/game/farm_town_info?action=claim_load&town_id=51543&h=$token', 'json={"target_id":"19413","claim_type":"normal","time":300,"town_id":"51543","nlreq_id":13597943}' , $cook, 1 , 0);

    Не работает!!! Укажите, пожалуйста, на ошибку???

    Вот что получается:
    PHP:
    <?php
     
    function requester($url$post 0$cookies ''$head 1$body 0

          
    $cl curl_init(); 
          
    curl_setopt($clCURLOPT_URL$url); 
          
    curl_setopt($clCURLOPT_RETURNTRANSFER1); 
          
    curl_setopt($clCURLOPT_HEADER$head); 
          
    curl_setopt($clCURLOPT_COOKIE$cookies); 
          
    curl_setopt($clCURLOPT_NOBODY$body); 
          if (
    $post){ 
              
    curl_setopt($clCURLOPT_POST1); 
              
    curl_setopt($clCURLOPT_HTTPHEADER, array('X-REQUESTED-WITH: XMLHttpRequest'));  //иммитируем AJAX запрос
              //curl_setopt($cl, CURLOPT_HTTPHEADER, array('X-SLIDER-WITH: b00zy-njasha'));  
              
    curl_setopt($clCURLOPT_POSTFIELDS$post); 
          } 
          
    //curl_setopt($ch, CURLOPT_STDERR, $f);  //Файл, в который будут выводиться сообщения об ошибках
          
    $line curl_exec($cl); 
          
    curl_close($cl);     
          return 
    $line


    $login 'Tartang'
    $password '7TXzMQvUZt3qUqh'

    //get session [grepolis.com] 
    preg_match_all('#Set-Cookie: (\S+;)#i'requester('http://ru.grepolis.com/start/index?action=login_from_start_page''json={"name":"'.$login'","password":"'.$password.'","passwordhash":"","autologin":false}'010), $co); 
    $cook implode(''$co[1]);  

    //get url ans sess [ru11.grepolis.com] 
    preg_match('#Location: (\S+)\r\n#i'requester('http://ru.grepolis.com/start?action=login_to_game_world''world=ru11&facebook_session=&facebook_login=&gift_key=&portal_sid=&name=&password='$cook10), $urls); 
    preg_match_all('#Set-Cookie: (\S+;)#i'requester($urls[1], 0010), $co); 
    $cook implode(' '$co[1]); 

    //join to game 
    $ans requester('http://ru11.grepolis.com/game/index?login=1'0$cook10); 

    // other thash and stuff 
    preg_match("#Game\.csrfToken = '(\S+)'#"$ans$token); 
    print 
    $token[1];  
    requester ('http://ru11.grepolis.com/game/farm_town_info?action=claim_load&town_id=51543&h=$token''json={"target_id":"19413","claim_type":"normal","time":300,"town_id":"51543","nlreq_id":13597943}' $cook0);
    ?>



     
  4. cardons

    cardons Elder - Старейшина

    Joined:
    19 Jul 2005
    Messages:
    778
    Likes Received:
    324
    Reputations:
    83
    Задача залогиниться что ли?
     
  5. Seganapa

    Seganapa New Member

    Joined:
    8 Jun 2012
    Messages:
    74
    Likes Received:
    0
    Reputations:
    0
    Нет, авторизация проходит!
    Задача в конце выполнить этот запрос:
    requester ('http://ru11.grepolis.com/game/farm_town_info?action=claim_load&town_id=51543&h=$token', 'json={"target_id":"19413","claim_type":"normal","time":300,"town_id":"51543","nlreq_id":13597943}' , $cook, 1 , 0);
     
  6. cardons

    cardons Elder - Старейшина

    Joined:
    19 Jul 2005
    Messages:
    778
    Likes Received:
    324
    Reputations:
    83
    requester ('http://ru11.grepolis.com/game/farm_town_info?action=claim_load&town_id=51543&h='.$token["1"], 'json={"target_id":"19413","claim_type":"normal","time":300,"town_id":"51543","nlreq_id":13597943}' , $cook, 1 , 0);
     
  7. Seganapa

    Seganapa New Member

    Joined:
    8 Jun 2012
    Messages:
    74
    Likes Received:
    0
    Reputations:
    0
    Спасибо!!! Заработало... $token["1"]
     
  8. Seganapa

    Seganapa New Member

    Joined:
    8 Jun 2012
    Messages:
    74
    Likes Received:
    0
    Reputations:
    0
    Нигде не могу найти пояснение...

    Почему мы при парсинге выводим значение в переменную $token...
    А при дальнейшем использовании пишем $token["1"]...

    Вычитал что это массив, но почему? Читал о preg_match, но в мануале про массив ничего нет
     
  9. Seganapa

    Seganapa New Member

    Joined:
    8 Jun 2012
    Messages:
    74
    Likes Received:
    0
    Reputations:
    0
    После долгих мучений получилось вот что:
    PHP:
    <?php
     ini_set
    ("max_execution_time""700");
     function 
    requester($url$post 0$cookies ''$head 1$body 0

          
    $cl curl_init(); 
          
    curl_setopt($clCURLOPT_URL$url); 
          
    curl_setopt($clCURLOPT_RETURNTRANSFER1); 
          
    curl_setopt($clCURLOPT_HEADER$head); 
          
    curl_setopt($clCURLOPT_COOKIE$cookies); 
          
    curl_setopt($clCURLOPT_NOBODY$body); 
          if (
    $post){ 
              
    //curl_setopt($cl, CURLOPT_PROXY, "127.0.0.1:9050");
              
    curl_setopt($clCURLOPT_POST1); 
              
    curl_setopt($clCURLOPT_HTTPHEADER, array('X-REQUESTED-WITH: XMLHttpRequest'));  //иммитируем AJAX запрос
              //curl_setopt($cl, CURLOPT_HTTPHEADER, array('X-SLIDER-WITH: b00zy-njasha'));  
              
    curl_setopt($clCURLOPT_POSTFIELDS$post); 
          } 
          
    //curl_setopt($ch, CURLOPT_STDERR, $f);  //Файл, в который будут выводиться сообщения об ошибках
          
    $line curl_exec($cl); 
          
    curl_close($cl);     
          return 
    $line


    $login 'Tartang'
    $password '7TXzMQvUZt3qUqh'

    //get session [grepolis.com] 
    preg_match_all('#Set-Cookie: (\S+;)#i'requester('http://ru.grepolis.com/start/index?action=login_from_start_page''json={"name":"'.$login.'","password":"'.$password.'","passwordhash":"","autologin":false}'010), $co); 
    $cook implode(''$co[1]);  

    //get url ans sess [ru11.grepolis.com] 
    preg_match('#Location: (\S+)\r\n#i'requester('http://ru.grepolis.com/start?action=login_to_game_world''world=ru11&facebook_session=&facebook_login=&gift_key=&portal_sid=&name=&password='$cook10), $urls); 
    preg_match_all('#Set-Cookie: (\S+;)#i'requester($urls[1], 0010), $co); 
    $cook implode(' '$co[1]); 

    //join to game 
    $ans requester('http://ru11.grepolis.com/game/index?login=1'0$cook10); 

    // other thash and stuff 
    preg_match("#Game\.csrfToken = '(\S+)'#"$ans$token); 
    print 
    $token[1];  
    /* requester ('http://ru11.grepolis.com/game/farm_town_info?action=claim_load&town_id=51543&h='.$ token["1"], 'json={"target_id":"19413","claim_type":"normal","time":300,"town_id":"51543","nlreq_id":0}' , $cook, 1 , 0);
    sleep(rand(5,20));
    requester ('http://ru11.grepolis.com/game/farm_town_info?action=claim_load&town_id=51543&h='.$ token["1"], 'json={"target_id":"19410","claim_type":"normal","time":300,"town_id":"51543","nlreq_id":0}' , $cook, 1 , 0);
     */
    ?>
    Скрипт успешно проработал неделю... А сегодня перестал получать переменную token.

    Посмотрел в коде страницы, ничего вроде не изменилось. Снова проснифил все переходы, вроде все по старому... А скрипт не работает... Взгляните кто-нибудь свежим взглядом, пожалуйста... Как выловить причину?

    PS на других акках работает без проблем...
     
    #29 Seganapa, 28 Jun 2012
    Last edited: 28 Jun 2012
  10. Melfis

    Melfis Elder - Старейшина

    Joined:
    25 Apr 2011
    Messages:
    505
    Likes Received:
    105
    Reputations:
    53
    может потому что забанили за бота? Не?
     
  11. Seganapa

    Seganapa New Member

    Joined:
    8 Jun 2012
    Messages:
    74
    Likes Received:
    0
    Reputations:
    0
    да нет... ни с того ни с сего скрипт опять заработал... мож на сервере какой глюк был...