Как войти в систему с помощью cURL с POST и Cookie

Сервер успешно получает логин, пароль и CAPTCHA. Как это сделать с помощью cookie?

Не знаю какая информация нужна для помощи покажу все:

Login Form:

<div id="loginForm">
 <div id="logo"><img src="logo.png" border="0" /></div>
 <div class="loginBar">Login</div>
  <form action="index.php" method="post">
    <input type="hidden" name="p" value="login" />
    <div class="line">
      <label>Captcha</label>
      <img src="captcha/securimage_show.php" border="0" />
    </div>
    <div class="line">
      <label>&nbsp;</label>
      <input type="text" name="captcha" value=""/>                
    </div>
    <div class="line">
      <label>&nbsp;</label>
      <input type="submit" value="Login" />
    </div>
  </form>                        
 <hr/>
 <a href="index.php?p=register" class="register" title="Click to register">Register</a>
</div>

код cURL:

    extract($_POST);

    //set POST variables
    $proxy = '127.0.0.1:8118';
    $url = 'http://example.com/index.php';
    $fields_string= 'p=login&user=' . $user . '&pass=' . $passwd . '&captcha=' . $_POST['captcha'] . '&submit=Login';

        //open connection
        $ch = curl_init();

        //set the url, number of POST vars, POST data
        curl_setopt($ch,CURLOPT_URL, $url);
        curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
        curl_setopt($ch,CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
        curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch,CURLOPT_PROXY, $proxy);
        curl_setopt($ch,CURLOPT_COOKIEJAR, "cookie.txt");
        curl_setopt($ch,CURLOPT_COOKIEFILE, "cookie.txt");
    //curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
        //execute post
        $result = curl_exec($ch);

        print_r(curl_error($ch));
        print_r(curl_getinfo($ch));
        print_r(curl_errno($ch));

        //close connection
        curl_close($ch);

curl getinfo:

[url] => http://example.com/index.php 
[content_type] => text/html 
[http_code] => 200 
[header_size] => 415 
[request_size] => 325 
[filetime] => -1 
[ssl_verify_result] => 0 
[redirect_count] => 0 
[total_time] => 1.549389 
[namelookup_time] => 3.7E-5 
[connect_time] => 0.000138 
[pretransfer_time] => 0.000142 
[size_upload] => 62 
[size_download] => 1585 
[speed_download] => 1022 
[speed_upload] => 40 
[download_content_length] => 1585 
[upload_content_length] => 0 
[starttransfer_time] => 1.27051 
[redirect_time] => 0 
[certinfo] => Array ( ) 
[redirect_url] =>

Real cookie:

Host:                 example.com
Name:                 PHPSESSID
Path:                 /
Content:              7qk7bb17nr030g5j59h2gq3nq6
Content raw:          7qk7bb17nr030g5j59h2gq3nq6
Expires:              At end of session
Expires raw:          0
Send for:             Any type of connection
Send for raw:         false
Created:              Fri 25 Nov 2011 10:37:24 PM EET
Created raw:          1322253443569272
Last accessed:        Sat 26 Nov 2011 11:06:02 AM EET
Last accessed raw:    1322298361723991
HTTP only:            No
HTTP only raw:        false
This domain only:     No
This domain only raw: false
Policy:               no information available
Policy raw:           0
Status:               no information available
Status raw:           0
---

Геренированный файл libcurl в cookie. txt:

# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.

example.com FALSE   /   FALSE   0   PHPSESSID   crs9cm100agdfsujsncr964jg7

Когда я запускаю этот код, Account, Passwd и Captcha успешно получены сервером, но есть ошибка с cookie:

Убедитесь, что у вас включены cookies

Также я увидел, что реальный cookie Content raw отличается от сгенерированного libcurl.

Также я увидел, что из моей формы я успешно перехватываю куки веб-сервера.

PS!!! Я получаю куки с этой ссылки в форме входа:

  <img src="captcha/securimage_show.php" border="0" />
7
задан Anthony 20 July 2015 в 03:49
поделиться