Recent update

Subscribe to RSS feed

[PHP] FSOCKOPEN - một bước lên pro

January 20th, 2010 by squallcs12

Hiện nay, website tự động thực hiện một thao tác khá được ưa chuộng và khá nhiều request. Ví dụ như tự động login vào yahoo và đọc mail, tự động vào facebook và lấy danh sách tin mới hay bạn bè, tự động vào google search rồi lấy kết quả về, hay đơn giản nhất là robot lấy tin tức … … Vì thế t viết 1 cái hướng dẫn cơ bản để bạn nào muốn làm thì có hướng để tìm hiểu.
Từ khóa: auto, robot …
Example:
<?php
$fp = @fsockopen(”www.google.com”, 80, $errno, $errstr, 30);
if (!$fp) {
echo “$errstr ($errno)
\n”;
} else {
$out = “GET / HTTP/1.1\r\n”;
$out .= “Host: www.google.com\r\n”;
$out .= “Connection: Close\r\n\r\n”;
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
?>

Code này sẽ hiển thị nội dung trang web www.google.com trên ngay trang của bạn mà không phải xài iframe hay frame.
Như các bạn sẽ thấy, phía trên phần html nó có mấy cái thế này
HTTP/1.1 200 OK
Date: Wed, 20 Jan 2010 03:24:48 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
Set-Cookie: PREF=ID=5b941f59dcf3f5f5:TM=1263957888:LM=1263957888:S=x2AiZBsR6Ekpi3az; expires=Fri, 20-Jan-2012 03:24:48 GMT; path=/; domain=.google.com.vn
Set-Cookie: NID=31=YIJq_mjIm0XrCjRviByY6UTUrVF6Rl1Bum_CzXX0-xDYq3u0YKEmOwoQtr3oIyQSDPUwJoXZNY0CiFwUUUfgDur6Hask8rsYeLs0pI6S7e__DphE0L3OToD9T0jeOduA; expires=Thu, 22-Jul-2010 03:24:48 GMT; path=/; domain=.google.com.vn; HttpOnly
Server: gws
X-XSS-Protection: 0
Transfer-Encoding: chunked
Connection: close

Những dòng này là header của cái trang web, để tìm hiểu về header là gì, dzo google.com. Ở đây mình chỉ đề cập tới một vài cái thường ảnh hưởng đến công việc thôi.
Cái đầu tiên cần chú ý là header-location
Header nhận về sẽ có dạng thế này

Location: /abc/def.php

Nó sẽ chuyển browser đến trang web /abc/def.php . Code php để send nó là

header(’Location: /abc/def.php’);

Header này thường được sử dụng trong trường hợp ng ta muốn chuyển ng sử dụng đến ngay một trang web nào đó.
Cái thứ 2 cần nói là header: set-cookie. Nó thế này

Set-Cookie: daotranbang=pro

CodePHP để send là

setcookie(’daotranbang’,'pro’);

Dùng để set-cookie cho browser. Nếu thắc mắc cookie là gì thì google.
Bài tập cơ bản nhất là viết 1 trang hiển thị kết quả search từ google. Vì google đòi hỏi rất ít thông tin để chạy như bạn thấy đấy.
Một số trường hợp, website có thể yêu cầu một số field trong request header của mình, ví dụ như referer, agent, content-type, etc. Bạn có thể tìm hiểu thêm qua google và wikipedia.
Trong Zend, bạn có thể xài zend_http_client để tiện và pro hơn, vì nó có thể tự detect header, decode body, store cookie, auto redirect …
Chúc tìm hiểu dzui dzẻ.

Posted in PHP | tagged , , , | | 0 Comments

  • Tags

  • Categories

  • Links

  •