cUrl и ошибка 400

Тема в разделе "PHP", создана пользователем KillDead, 29 июл 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    562
    Делаю следующее- хожу по сайту с помощью библиотеки curl, в мульти поточном режиме. Запустил скрипт у себя, с помощью wampserver, php 5.3, cURL 7.19.4. Всё нормально. Запустил скрипт на другой машине, но под тем же сервером- при соединении с одной из страниц сайта – появляется ошибка 400.
    HTML:
    
    Bad Request
    Your browser sent a request that this server could not understand.
    
    Invalid URI in request Cookie: Elgg=a1eoelbvvmora5074he0t93q2
    
    Заголовки, которые посылает курл
    HTML:
    
     GET / HTTP/1.1 
    User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618) 
    Host: xxxx.com 
    Accept: */* 
    Cookie: Elgg=oeqf7gc1ifo0142cqcu70nf3d5 
    Connection: keep-alive 
    Keep-Alive: 300 
    Accept-Encoding: gzip,deflate 
    Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7 
    Accept-Language: ru,en-us,en;q=0.5 
     


    Заголовки, которые я получаю у себя, которые отдаёт сайт (должен по крайней мере)
    HTML:
    
    HTTP/1.1 200 OK 
    Date: Wed, 28 Jul 2010 17:29:26 GMT 
    Server: Apache 
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
    Expires: Thu, 19 Nov 1981 08:52:00 GMT 
    Pragma: no-cache 
    Keep-Alive: timeout=15, max=100 
    Connection: Keep-Alive 
    Transfer-Encoding: chunked 
    Content-Type: text/html; charset=UTF-8 
    
    --------------
    Где может быть моя ошибка?
     
  2. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    Заголовки которые отправляет твой браузер -- и сравнивай с тем что отправляет курл

    нафига ты тут выложил стандартный 200 ответ сервера -- непонятно

    ЗЫ что за пробел перед гетом?
     
  3. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    ты бы лучше скрипт выложил, не все обладают способностью к реверсингу кода на основе результатов его работы
     
  4. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    562
    Да я сравнивал со снифером в браузере
    HTML:
    (Request-Line)    GET / HTTP/1.1 
    Host    хххх.com 
    User-Agent    Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 
    Accept    text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
    Accept-Language    ru,en-us;q=0.7,en;q=0.3 
    Accept-Encoding    gzip,deflate 
    Accept-Charset    windows-1251,utf-8;q=0.7,*;q=0.7 
    Keep-Alive    115 
    Connection    keep-alive 
    Cookie    Elgg=1422d6f3b5f018048986a9dddcd016bc
    вроде аналогичный хеад.
    Этот ответ я получаю на 1 компе (сейчас ещё проверил и на нетбуке- норм) и если хожу через браузер. На другой машине сервер что-то не понимает в хеадере.
    Пробел- ошибка копипаста)
    эт сделать проблематично, тк нужно выкладывать всю либу и её копать. Мой запрос выглядит так))
    PHP:
        function reg_result($content) {
            
    $fp fopen(TEMP_DIR '/result_user.log''a');
            
    fwrite($fp$this->chek_url ' ' $this->user_login ' ' $this->user_pass ' ' $this->user_email "\n");
            
    fclose($fp);
            return array(
                
    'url' =>trim($this->chek_url),
                
    'callback' => 'login_step1_post'
            
    );
        }
    trim($this->chek_url)- это урл, по которому пойдёт курл, трим я потом дописал, на всякий пожарный, но не помогло
     
  5. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    вообще функция пишет лог в файл

    и запросом тут и не пахнет =)

    посему два вопроса
    1) ты знаешь что делаешь ?
    2) если ты выложишь под хайдом ресурс и что нужно делать разговор будет предметнее
     
  6. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    562
    1)- пока всё работало- точно знал что делаю, теперь не знаю:D И там не лог, а запись результата.
    Вроде понял в чём может быть дело. Перед тем как начать ходить по сайту, проверял почту классом http://www.phpclasses.org/package/2-PHP-Access-to-e-mail-mailboxes-using-the-POP3-protocol.html
    а он использовал stream_wrapper_register. пока исключил его- всё работает, хоть и не полноценно, но точно скажу что виноват именно он- когда попробую запустить и с ним и без него.
    ------------------------------------------
    Сейчас залил на сервер и появился нубский вопрос:ah:- как сделать в curl перенаправление, если сервер вернул 302? опции FOLLOWLOCATION= 1 и MAXREDIRS = 10 стоят, у меня всё работает, а на сервере нет- перенаправления не происходит.
     
  7. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    FOLLOWLOCATION может быть запрещен настройками сервера

    уверен что это не так?

    PS ты в курсе что такое лог? в любом случае у тебя даже файл называется result_user.log =)
     
  8. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    562
    скорее всего так и есть. а где это можно посмотреть\включить?
    я просто подумал, что ты всю функцию логом обозвал) Там просто все общение с курлом происходит через либу, которая по очереди вызывает из класса методы.
     
  9. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    у тебя error_reporting(~E_ALL) включен?
    обычно если FOLLOWLOCATION отключен при попытке его установить выводится сообщение

    проверь safe_mode и open_basedir в php.ini
     
    KillDead нравится это.
  10. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    562
    :D ага, точно, open_basedir всё гадит.
    Ошибки всегда включаю, забыл только display_errors включить). Теперь буду думать- расширять системные требования или пытаться дописать, хотя это не лучший вариант.
     
Статус темы:
Закрыта.