CURL Grab, clone, login auto

Cơ bản về sử dụng Curl

Bài này mình sẽ nói chi tiết cách dùng Curl cơ bản nhất.
Curl có rất nhiều function nhưng dùng nhiều nhất và hay dùng nhất là các hàm

– curl_init();
// hàm này dùng để khởi tạo một phiên làm việc của Curl không có đối số truyền vào, giá trị trả về là đối số cho các hàm sau.
VD: $curl = curl_init();

– curl_setopt($curl, $options, $value);
// hàm này để thiết lập phương thức làm việc cho curl nghĩa là chúng ta bảo nó grab 1 trang wap hay upload 1 tập tin hoặc post bài viết ý 
Trong đó các đối số nhập vào là $curl được khởi tạo bên trên, $options là các tuỳ chọn mình sẽ nói sau, $value là các giá trị của tuỳ chọn đó.
VD: curl_setopt($curl, CURLOPT_URL, ‘http://tuoitreit.vn’);
có một hàm tương tự là curl_setopt_array($curl, array($options => $value));

– curl_exec($curl);
// hàm này thực hiện phiên làm việc của curl.
Đối số truyền vào $curl được khởi tạo bên trên.

– curl_close($curl);
// hàm này kết thúc một phiên làm việc với curl.

Phần sau mình sẽ tản mạn về Grab trang wap bằng Curl nhé !

Đọc đến đây các bạn thấy Curl rất đơn giản đúng ko ? Oki mình thích cách suy nghĩ đó  đừng nản nhé !
Bài này mình sẽ hướng dẫn dùng Curl để Grab trang wap khác.
Ưu điểm của Curl là tốc độ, chính xác, phù hợp trên mọi địa hình  và 1 điều mình dám khẳng định “Không có code nào chống được grab bằng Curl, trừ khi nó chặn người dùng truy cập vào trang wap đó ” tốc độ Grab của Curl khi mình test là nhanh gấp 10 lần file_get_contents() và gấp 5 lần fsockopen() độ chính xác đến mili giây 

Bắt đầu

<?php
// cú pháp quen thuộc không thể bỏ qua

$curl = curl_init();
// khởi tạo phiên làm việc với Curl

curl_setopt($curl, CURLOPT_URL, 'http://tuoitreit.vn');
// khai báo địa chỉ url

curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-type: text/html','charset:UTF-8'));
// gửi một yêu cầu http

curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
// khai báo user agent

curl_setopt($curl, CURLOPT_REFERER, 'http://google.com');
// cái này khai báo bạn đến từ trang wap nào

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// thiết lập trả về đối số khi thực hiện phiên Curl

curl_setopt($curl, CURLOPT_TIMEOUT, 30);
// set time out tính theo giây.

$data = curl_exec($curl);
// thực hiện 1 phiên curl trả về nội dung của trang wap cần grab

curl_close($curl);
// kết thúc phiên làm việc với curl

echo $data;
// xem thành quả nào 
?>

Vậy là các bạn biết cách grab 1 trang wap tùy thích rồi đấy, kết hợp với str_replace(), preg_replace(), preg_match() để lấy nội dung theo ý thích.
Có lẽ phần này được mong chờ nhất  dùng Curl để login vào trang wap khác.
Đầu tiên cần vewsource trang wap đó lên để xem form đăng nhập.
Ví dụ mình có form

<form action="login.php" method="post">
<input name="user" type="text" />
<input name="pass" type="password" />
<input name="submit" type="submit" value="login" />
</form>

Dùng curl để login như sau

<?php
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'domain.com/login.php');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_COOKIE, 'cookies.txt');
// khai báo cookie
curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookies.txt');
// khai báo file lưu cookie
curl_setopt($curl, CURLOPT_COOKIEJAR, 'cookies.txt');
// khai báo định dạng cookie
curl_setopt($curl, CURLOPT_POST, 1);
// chuyển bị gửi dữ liệu qua phương thức post
curl_setopt($curl, CURLOPT_POSTFIELDS, array('user' => 'tuoitreit.vn', 'pass' => '123456', 'submit' => 'login'));
// gửi dữ liệu từ form
curl_exec($curl);
curl_close($curl);
?>

Vậy là chúng ta login thành công, việc gửi bài viết cũng tương tự.
Lưu ý:
Cứ mỗi một trường nhập liệu trong form

<input name="tên trường" value="giá trị" />

Thì ta phải khai báo
curl_setopt($curl, CURLOPT_POSTFIELDS, array(‘tên trường 1’ => ‘giá trị trường 1’, ‘tên trường 2’ => ‘giá trị trường 2’));
Đối với Vbb anti Spam bot thì phải dùng kỹ thuật cao hơn
Chúc các bạn may mắn, hi vọng sau tut này các bạn sẽ hiểu hơn về php và yêu thích php hơn.

Theo tuoitreit.vn