Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2011, 21:17   #1
dem66
Форумчанин
 
Регистрация: 31.05.2011
Сообщений: 316
Восклицание curl и barbars.ru. не ходит по ссылкам.

Добрый вечер форумчанам.
Постала задача сделать скрипт который будет ходить по ссылкам на сайте barbars.ru (браузерная игра).

Автризируется без вопросов, ссылки парсятся тоже без проблем но оно не заходит. Тоесть ввожу ссылку а оно остается на тойже странице что и было.

Ссылка получается вида http://barbars.ru/?wicket:interface=...=1324201581718

Исполузую Curl, пробывал даже Сокеты, результат тотже.

Часть кода:

PHP код:
$user_agents UserAgents::GetRnd();
$agent $user_agents[1];

$http = new Http;
$http->SetCookie('cookies_'.$user_id.'.txt');
$http->Set_REFERER($ref);
$http->Set_USERAGENT($agent);
$http->SetHEADER(1);
$http->EchoContent(1);

//.... заходим на страницу и получаем контент, парсим и находимые //необходимые ссылки.
$page $http->GetPageCurl("http://barbars.ru/game/towers");

//.... фильтруем ссылки и выбираем нужную
//.... переходим по ссылке

$http->Set_REFERER("http://barbars.ru/game/towers");
$page2 $http->GetPageCurl($New_url); 
Вот на этом этапе и начинаются проблемы. $page2 возвращает страницу game/towers

Выбор юзер-агента:
PHP код:
class UserAgents
{
    public static function 
GetRnd()
    {
        return 
self::$user_agents[rand(0,sizeof(self::$user_agents)-1)];
    }
    
    
//Массив Aser-agent'ов
     
public static $user_agents = array(
        
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.91 Safari/534.30',
        
'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.17) Gecko/20110420 Firefox/3.6.17',
        
'Opera/9.50 (X11; Linux ppc; U; en)',
        
'Opera/9.63 (Macintosh; Intel Mac OS X; U; de) Presto/2.1.1',
        
'Opera/9.63 (X11; Linux i686; U; de) Presto/2.1.1',
        
'Opera/9.80 (Windows NT 5.1; U; Distribution 00; ru) Presto/2.8.131 Version/11.11',
        
'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB7.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)',
        
'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.68 Safari/534.24',
    );

Ну и сам курл:
PHP код:
public function GetPageCurl($url$proxy=NULL){
        
//$user = UserAgents::GetRnd();
        //$ref = Referer::GetRnd();
        

        
$ch curl_init($url);
        
curl_setopt($chCURLOPT_URL$url);
        if(!empty(
$this->iOptions['HEADER'])){
            
curl_setopt($chCURLOPT_HEADER$this->iOptions['HEADER']);
            
curl_setopt($chCURLINFO_HEADER_OUT1);
            
//curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'setCookies');
        
}
        if(!empty(
$this->iOptions['CURLOPT_REFERER'])){
            
curl_setopt($chCURLOPT_REFERER$this->iOptions['CURLOPT_REFERER']);
        }
        
curl_setopt($chCURLOPT_AUTOREFERER1);
        
        if(!empty(
$this->iOptions['CURLOPT_USERAGENT'])){
            
curl_setopt($chCURLOPT_USERAGENT$this->iOptions['CURLOPT_USERAGENT']);
        }
        
        
curl_setopt($chCURLOPT_TIMEOUT120);
        
curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

        
if(!empty($this->iOptions['CURLOPT_COOKIEFILE'])){
         
curl_setopt($chCURLOPT_COOKIEFILE$this->iOptions['CURLOPT_COOKIEFILE']);
         
curl_setopt($chCURLOPT_COOKIEJAR$this->iOptions['CURLOPT_COOKIEJAR']);
       }
       
      
// if(!empty($this->iOptions['CURLOPT_CONNECTTIMEOUT'])){
    //     curl_setopt($ch, CURLOPT_COOKIEFILE, $this->iOptions['CURLOPT_CONNECTTIMEOUT']);
    //     curl_setopt($ch, CURLOPT_COOKIEJAR, $this->iOptions['CURLOPT_TIMEOUT']);
     //  }
       
        //curl_setopt($ch, CURLOPT_USERAGENT, $user);
        
        
if(!empty($proxy)){
          
curl_setopt($chCURLOPT_PROXY$proxy);
        }
        

        if(
$this->iOptions['EchoContent']==1){
            
$page curl_exec($ch);
        }else{
            
$page NULL;
            
curl_exec($ch);
        }
        if(
$this->iOptions['EchoInfo']==1){
            
$info curl_getinfo($ch);
        }

        
//$page = $this->curl_redirect($ch);
        
$this->iError curl_error ($ch);
        
$this->iHttpStatus curl_getinfo($chCURLINFO_HTTP_CODE);
        
$this->iErrorNo curl_errno($ch);
        
curl_close($ch);

        return array(
'Error'=>$this->iError'ErrorNo'=>$this->iErrorNo'status'=>$this->iHttpStatus'content'=>$page,'info'=>$info);

CURLOPT_COOKIEFILE и CURLOPT_COOKIEJAR один и тот же файл.

Ps: сдесь ведь используется QUERY_STRING?
Каким макаром у них сайт работает не понимаю. Вечно они усложняют жизнь.

Зарание благодарен

Последний раз редактировалось dem66; 18.12.2011 в 21:23.
dem66 вне форума Ответить с цитированием
Старый 20.12.2011, 23:42   #2
dem66
Форумчанин
 
Регистрация: 31.05.2011
Сообщений: 316
Восклицание

помогите пожалуйста. я уже все варианты перепробывал. даже css подргужаю. полность заголовки реального браузера эмулирую. Не помагает.
Подозреваю у меня проблема как у автора этой темы http://forum.ru-board.com/topic.cgi?forum=31&topic=7949

Редиректов никаких нет. Только при авторизации.
dem66 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
переход по http ссылкам Lokos Общие вопросы Delphi 5 13.10.2011 10:10
кликать по ссылкам в WebBrowser apx_angel Работа с сетью в Delphi 1 03.10.2010 03:51
простой вопрос по ссылкам CraZZy RabbIt HTML и CSS 8 21.04.2009 20:15
Internet и клики по ссылкам frodo Работа с сетью в Delphi 3 08.07.2008 10:59