За последние 24 часа нас посетили 15795 программистов и 1664 робота. Сейчас ищут 887 программистов ...

Проблема с PHP Curl

Тема в разделе "PHP для новичков", создана пользователем makhovsky, 23 мар 2014.

  1. makhovsky

    makhovsky Новичок

    С нами с:
    22 мар 2014
    Сообщения:
    3
    Симпатии:
    0
    Всем доброго дня.
    Создаю веб-бота. Автоматический вход на сайт уже работает.
    Далее надо сэмулировать действие аналогичное нажатию на кнопку.
    На кнопке висит getBetslip().confirmPlaceBet(false, true);
    Все куки при нажатии я отловил.
    Передаю всё что в разделе "Cookie:" и все, что передается через POST (переменные через &).
    Обязательно ли передавать другие строки?


    POST ***/placebet.htm HTTP/1.1
    Host: http://www.****.com
    User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:27.0) Gecko/20100101 Firefox/27.0
    Accept: text/plain, */*; q=0.01
    Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    X-NewRelic-ID: Vg8OWFJACgEDXFhaAQ==
    Content-Type: application/x-www-form-urlencoded; charset=UTF-8
    X-Requested-With: XMLHttpRequest
    Referer: ...
    Content-Length: 138
    Cookie: ..... (передаю через CURLOPT_COOKIE)
    Connection: keep-alive
    Pragma: no-cache
    Cache-Control: no-cache
    perem1=value1&perem2=value2 ... (передаю через CURLOPT_POSTFIELDS)
    HTTP/1.1 200 OK
    Server: nginx
    Date: Sun, 23 Mar 2014 07:49:25 GMT
    Content-Type: text/html;charset=utf-8
    Transfer-Encoding: chunked
    Connection: keep-alive
    Content-Encoding: gzip


    Code:
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_ENCODING, "");
    curl_setopt($ch, CURLOPT_USERAGENT, $uagent);
    curl_setopt($ch, CURLOPT_TIMEOUT, 120);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
    curl_setopt($ch, CURLOPT_FAILONERROR, 1);
    curl_setopt($ch, CURLINFO_HEADER_OUT, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($ch, CURLOPT_COOKIE, $cookiedata);
    возможно что-то забыл?
    заранее спасибо
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Если пеhехватил все что нужно и все работает, тогда все хватает. А какие еще строки ты хочешь передавать?
    В чем проблема?
     
  3. makhovsky

    makhovsky Новичок

    С нами с:
    22 мар 2014
    Сообщения:
    3
    Симпатии:
    0
    проблема в том, что предполагаемое действие не совершается, скорее всего что-то забыл передать, или того что описано достаточно?
     
  4. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    а ошибка выходить вообще?
     
  5. makhovsky

    makhovsky Новичок

    С нами с:
    22 мар 2014
    Сообщения:
    3
    Симпатии:
    0
    проблема более не актуальна... разобрался. дело было в том, что была целая цепочка действий после входа на сайт... пропускать post запросы было нельзя до выполнения нужного мне действия. я проанализировал все отправляемые куки из этой цепочки, съимитировал все нажатия и отправки данных и всё получилось.