Hướng dẫn php curl login to website - php curl đăng nhập vào trang web

Ví dụ Panama Jack không hoạt động cho tôi - đưa ra lỗi nghiêm trọng: Gọi đến chức năng không xác định build_unique_path (). Tôi đã sử dụng mã này - (đơn giản hơn - ý kiến ​​của tôi):Give Fatal error: Call to undefined function build_unique_path(). I used this code - (more simple - my opinion) :


// options
$login_email = '';
$login_pass = 'alabala4807';
$cookie_file_path = "/tmp/cookies.txt";
$LOGINURL = "http://alabala.com/index.php?route=account/login";
$agent = "Nokia-Communicator-WWW-Browser/2.0 (Geos 3.0 Nokia-9000i)";

// begin script
$ch = curl_init();

// extra headers
$headers[] = "Accept: */*";
$headers[] = "Connection: Keep-Alive";

// basic curl options for all requests
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);

// set first URL
curl_setopt($ch, CURLOPT_URL, $LOGINURL);

// execute session to get cookies and required form inputs
$content = curl_exec($ch);

// grab the hidden inputs from the form required to login
$fields = getFormFields($content);
$fields['email'] = $login_email;
$fields['password'] = $login_pass;

// set postfields using what we extracted from the form
$POSTFIELDS = http_build_query($fields);
// change URL to login URL
curl_setopt($ch, CURLOPT_URL, $LOGINURL);

// set post options
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $POSTFIELDS);

// perform login
$result = curl_exec($ch);

print $result;

function getFormFields($data)
{
if (preg_match('/()/is', $data, $matches)) {
$inputs = getInputs($matches[1]);

return $inputs;
} else {
die('didnt find login form');
}
}

function getInputs($form)
{
$inputs = array();
$elements = preg_match_all("/(]+>)/is", $form, $matches);
if ($elements > 0) {
for($i = 0;$i $el = preg_replace('/\s{2,}/', ' ', $matches[1][$i]);
if (preg_match('/name=(?:["\'])?([^"\'\s]*)/i', $el, $name)) {
$name = $name[1];

$value = '';
if (preg_match('/value=(?:["\'])?([^"\'\s]*)/i', $el, $value)) {
$value = $value[1];
}

$inputs[$name] = $value;
}
}
}

return $inputs;
}

$grab_url='http://grab.url/alabala';

//page with the content I want to grab
curl_setopt($ch, CURLOPT_URL, $grab_url);
//do stuff with the info with DomDocument() etc
$html = curl_exec($ch);
curl_close($ch);

var_dump($html);
die;

Đây là một hướng dẫn về cách đăng nhập vào một trang web bằng Curl và PHP. Trong hướng dẫn này, chúng tôi sẽ tạo một bot PHP đơn giản đăng nhập vào một trang web trước khi truy cập trang được bảo vệ bằng mật khẩu.

Trong & nbsp; Ví dụ này, tôi đã tạo ra một số hằng số được đặt tên ở đầu tập lệnh. Hãy chắc chắn thay đổi các giá trị cấu hình này để phù hợp với nhu cầu của bạn.

 USERNAME,
    'password' => PASSWORD
);

//Initiate cURL.
$curl = curl_init();

//Set the URL that we want to send our POST request to. In this
//case, it's the action URL of the login form.
curl_setopt($curl, CURLOPT_URL, LOGIN_ACTION_URL);

//Tell cURL that we want to carry out a POST request.
curl_setopt($curl, CURLOPT_POST, true);

//Set our post fields / date (from the array above).
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($postValues));

//We don't want any HTTPS errors.
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

//Where our cookie details are saved. This is typically required
//for authentication, as the session ID is usually saved in the cookie file.
curl_setopt($curl, CURLOPT_COOKIEJAR, COOKIE_FILE);

//Sets the user agent. Some websites will attempt to block bot user agents.
//Hence the reason I gave it a Chrome user agent.
curl_setopt($curl, CURLOPT_USERAGENT, USER_AGENT);

//Tells cURL to return the output once the request has been executed.
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

//Allows us to set the referer header. In this particular case, we are 
//fooling the server into thinking that we were referred by the login form.
curl_setopt($curl, CURLOPT_REFERER, LOGIN_FORM_URL);

//Do we want to follow any redirects?
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false);

//Execute the login request.
curl_exec($curl);

//Check for errors!
if(curl_errno($curl)){
    throw new Exception(curl_error($curl));
}

//We should be logged in by now. Let's attempt to access a password protected page
curl_setopt($curl, CURLOPT_URL, 'http://example.com/protected-page.php');

//Use the same cookie file.
curl_setopt($curl, CURLOPT_COOKIEJAR, COOKIE_FILE);

//Use the same user agent, just in case it is used by the server for session validation.
curl_setopt($curl, CURLOPT_USERAGENT, USER_AGENT);

//We don't want any HTTPS / SSL errors.
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

//Execute the GET request and print out the result.
echo curl_exec($curl);

Trong đoạn mã PHP ở trên, chúng tôi đã tạo hai yêu cầu HTTP với Curl. Yêu cầu đầu tiên là & nbsp; một yêu cầu POST & nbsp; cố gắng xác thực với máy chủ. Yêu cầu thứ hai là yêu cầu GET cố gắng truy cập trang được bảo vệ bằng mật khẩu. Rõ ràng, yêu cầu thứ hai sẽ thất bại nếu nỗ lực xác thực đầu tiên của chúng tôi không thành công.

Một cuộc đổ sâu của mã:

  1. Hằng số tên người dùng là tên người dùng hoặc địa chỉ email mà bạn sử dụng khi đăng nhập vào trang web.
  2. Hằng số mật khẩu là mật khẩu mà bạn sử dụng khi đăng nhập.
  3. Hằng số user_agent chứa chuỗi tác nhân người dùng. Đặt một tác nhân người dùng có thể cực kỳ quan trọng, vì một số trang web nhất định sẽ ngăn bạn đăng nhập nếu họ nghĩ rằng yêu cầu đến từ & nbsp; một tập lệnh tự động. & NBSP; Trong ví dụ trên, tôi đã sử dụng một tác nhân người dùng cho Chrome. Về cơ bản, tôi đang đánh lừa trang web trong câu hỏi nghĩ rằng yêu cầu đến từ trình duyệt (giả mạo).
  4. Hằng số cookie_file chứa tên của tệp cookie của chúng tôi. Hãy nhớ rằng hầu hết các trang web & nbsp; liên kết các phiên của họ với ID phiên, thường được lưu trữ trong & nbsp; một tệp cookie trong trình duyệt của người dùng. Chúng tôi sẽ cần sao chép quy trình này nếu chúng tôi có ý định vượt qua trang đăng nhập!
  5. Login_form_url là một hằng số chứa URL của mẫu đăng nhập của trang web. Điều này có thể quan trọng, vì một số trang web sẽ kiểm tra trường giới thiệu & NBSP; HTTP. Trong trường hợp này, chúng tôi muốn máy chủ nghĩ rằng chúng tôi đã được chuyển hướng bởi mẫu đăng nhập.
  6. Hằng số & nbsp; login_action_url chứa url hành động. tức là URL của tập lệnh xác nhận đăng nhập. Đôi khi, đây sẽ là URL chính xác giống như mẫu đăng nhập. Kiểm tra HTML của biểu mẫu đăng nhập được đề cập (và xem Tab XHR & NBSP; trong bảng điều khiển nhà phát triển của bạn, chỉ trong trường hợp đăng nhập dựa trên AJAX).
  7. Sau đó, chúng tôi xây dựng mảng Postfields của chúng tôi, đại diện cho các tên trường và giá trị biểu mẫu mà chúng tôi muốn gửi qua bài đăng. Rõ ràng bạn sẽ cần phải điều chỉnh các khóa của mảng này để khớp với tên trường của mẫu đăng nhập được đề cập.
  8. Chúng tôi bắt đầu Curl; do đó tạo ra một người xử lý Curl.
  9. Chúng tôi đặt URL yêu cầu thành giá trị của hằng số & nbsp của chúng tôi; login_action_url. tức là chúng tôi đang nói với Curl rằng đây là URL mà chúng tôi muốn gửi yêu cầu đến.
  10. Chúng tôi đặt & nbsp; curlopt_post thành true vì chúng tôi muốn thực hiện yêu cầu POST (Curl sẽ gửi yêu cầu nhận theo mặc định).
  11. Chúng tôi chỉ định mảng Postfields của chúng tôi cho & nbsp; curlopt_postfields. tức là Đây là những giá trị bài đăng mà chúng tôi muốn gửi.
  12. Chúng tôi ngăn chặn mọi lỗi SSL bằng cách vô hiệu hóa một số tính năng xác minh SSL nhất định.
  13. Chúng tôi nói với Curl tên của tập tin cookie của chúng tôi là gì.
  14. Chúng tôi đặt tác nhân người dùng của chúng tôi (xem điểm 3).
  15. Chúng tôi nói với Curl rằng chúng tôi muốn nó trả về đầu ra được tạo sau khi yêu cầu đã được thực hiện.
  16. Chúng tôi giả mạo trường giới thiệu & nbsp; HTTP (xem điểm 5).
  17. Chúng tôi nói với Curl rằng chúng tôi muốn bỏ qua bất kỳ chuyển hướng nào.
  18. Cuối cùng, sau khi thiết lập tất cả các tùy chọn của chúng tôi, chúng tôi thực hiện yêu cầu đăng / đăng nhập.
  19. Chúng tôi kiểm tra xem có bất kỳ lỗi cong nào đã xảy ra không.
  20. Chúng tôi thay đổi tùy chọn & nbsp; curlopt_url để khớp URL của trang được bảo vệ bằng mật khẩu mà chúng tôi muốn truy cập.
  21. Chúng tôi cung cấp Curl với tên của tệp cookie của chúng tôi. Điều này rất quan trọng, vì máy chủ sẽ không nhận ra chúng tôi là người dùng đăng nhập nếu chúng tôi quên cung cấp nó.
  22. Chúng tôi đặt cùng một tác nhân người dùng. Thay đổi điều này hoặc bỏ nó có thể chứng minh gây tử vong, vì một số trang web sẽ sử dụng & nbsp; trường tác nhân người dùng để xác nhận các phiên người dùng (nếu tác nhân người dùng thay đổi từ yêu cầu này sang yêu cầu tiếp theo, thì có lẽ có một điều gì đó thú vị đang diễn ra).
  23. Một lần nữa, chúng tôi vô hiệu hóa các tùy chọn xác minh SSL.
  24. Chúng tôi thực hiện yêu cầu GET và in ra kết quả.

Tôi có thể sử dụng Curl để đăng nhập vào một trang web không?

Ví dụ: nếu một trang web đã bảo vệ nội dung Curl cho phép bạn vượt qua thông tin xác thực.Để làm như vậy, hãy sử dụng cú pháp sau: Curl --User "Tên người dùng: Mật khẩu" https://www.domain.com.if a website has protected content curl allows you to pass authentication credentials. To do so use the following syntax: curl --user "USERNAME:PASSWORD" https://www.domain.com .

Làm thế nào Curl URL trong PHP?

curl_setopt ($ CH, curlopt_returntransfer, 1);// Lấy URL và chuyển nó đến biến.curl_setopt ($ CH, curlopt_url, $ url); $ result = curl_exec ($ CH);curl_setopt( $ch , CURLOPT_URL, $url ); $result = curl_exec( $ch );

Tôi có thể sử dụng Curl trong PHP không?

Việc sử dụng Curl trong PHP Curl là tiện ích mở rộng PHP cho phép bạn sử dụng cú pháp URL để nhận và gửi dữ liệu.Curl làm cho nó đơn giản để kết nối giữa các trang web và tên miền khác nhau.cURL is a PHP extension that allows you to use the URL syntax to receive and submit data. cURL makes it simple to connect between various websites and domains.

Làm cách nào để làm cho trang web của tôi Curl?

Phương pháp GET được sử dụng để lấy tài nguyên từ một URL cụ thể.Lệnh Curl https://www.keycdn.com đơn giản sẽ sử dụng GET làm phương thức HTTP mặc định, tuy nhiên nó cũng có thể được chỉ định bằng cách sử dụng -Request Get hoặc -x Get.curl https://www.keycdn.com command will use GET as the default HTTP method, however it can also be specified using --request GET or -X GET .