2011-11-26 37 views
7

Máy chủ nhận thành công đăng nhập, mật khẩu và CAPTCHA. Làm thế nào để tôi làm điều đó với một cookie?Cách đăng nhập bằng cURL với POST và Cookie

Tôi không biết những gì thông tin là cần thiết để được giúp đỡ tôi sẽ chỉ cho tất cả:

Form Login: Mã

<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] => 

Cookie thực:

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 
--- 

tập tin Gerenated bởi libcurl trong 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 

Khi tôi chạy mã này, tài khoản, Pass và Captcha thành công được nhận bởi máy chủ, nhưng có lỗi với cookie:

Đảm bảo bạn đã bật cookie

Ngoài ra tôi đã thấy cookie thực Con lều thô là khác nhau bằng cách tạo ra với libcurl.

Ngoài ra tôi thấy rằng từ biểu mẫu của tôi, tôi đã bắt được cookie máy chủ web thành công.

PS !! Tôi nhận cookie từ liên kết này trong mẫu đăng nhập:

<img src="captcha/securimage_show.php" border="0" /> 
+0

Không phải chính câu hỏi này đã được hỏi trước đó chưa? Có vẻ như câu hỏi ban đầu đã bị xóa. Chỉ cần tự hỏi những gì đã xảy ra với nó bởi vì nó rõ ràng là cùng một câu hỏi và nguồn chính xác. – davidethell

+0

không ai trả lời .. tôi chỉ cố gắng tìm một số mẹo (nhưng cũng không phải là nosuccess – Tedy

+0

Bạn đã thử đăng trực tiếp dữ liệu của mình lên trang đích, thay vì sử dụng CURL (IE, hãy bọc biểu mẫu của bạn trong thẻ biểu mẫu và đặt mục tiêu URL "http://example.com/index.php")? –

Trả lời

0

Nó có thể là nguyên nhân của thuộc tính thiếu

curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE); 

cách curl này sẽ bị buộc phải bỏ qua cookie phiên 'cũ' và bắt đầu một phiên làm việc mới thay thế.

+0

với thông số này cũng sẽ hiển thị 2 cookie trì hoãn 1. trong cookie.txt và 2. cookie thực. – Tedy

Các vấn đề liên quan