PDA

View Full Version : [Hỏi] Sử dụng Curl bị đẩy qua trang khác ?



Nhoc.Maru
23-11-2011, 16:09
mình sử dụng curl để lấy bảng giá cà phê từ trang giacaphe.com
nhưng nó lại đẩy mình về trang có nội dung sau
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HEAD>
<TITLE>http://giacaphe.com/gia-ca-phe-truc-tuyen/</TITLE>
</HEAD>
<script type="text/javascript">
function access() {
var answer = confirm("406 Peter Cech: Click OK to continue..")
var referLink = document.createElement('a');
referLink.href = 'http://giacaphe.com/gia-ca-phe-truc-tuyen/';
if (answer)
{
document.cookie = "cech-fw=1";
if (navigator.appName == "Microsoft Internet Explorer")
{
document.body.appendChild(referLink);
referLink.click();
}
else
{
location.href='http://giacaphe.com/gia-ca-phe-truc-tuyen/';
}

}
else
{
alert(" 408 Peter Cech: Good bye. See you soon !!!");
window.open('http://google.com.vn','_parent');
}
}
</script>
<script type="text/javascript">
function checknow() {
var referLink = document.createElement('a');
document.cookie = "cech-fw=1";
referLink.href = 'http://giacaphe.com/gia-ca-phe-truc-tuyen/';
if (navigator.appName == "Microsoft Internet Explorer")
{
document.body.appendChild(referLink);
referLink.click();
}
else
{
location.href='http://giacaphe.com/gia-ca-phe-truc-tuyen/';
}
}
</script>
<BODY onload="checknow()">

</BODY></HTML>

có cách nào lách qua kiểu chống này ko ?

Nhoc.Maru
23-11-2011, 17:12
qua một hồi ở google thì biết đây là nội dung file tường lửa.
vậy có cách nào qua mặt nó không mọi người ?

truongson1810
23-11-2011, 17:55
Post code của bạn lên đây xem thử

trinhdiep
24-11-2011, 00:41
cái này thường áp dụng với các trang con có thông tin nhạy cảm ví dụ như một tệp tin xml cho ajax thường sử dụng cái này.

dau tien bạn truy cập trang chinh http://giacaphe.com để tạo ra môt session. no se tra về cookie or token-key gì đó để định danh session
tiếp theo bạn gửi request tới trang con với cookie or token-key vừa tìm được
mỗi site có tên cookie hay token-key khác nhau nên bạn phải tìm lấy bằng debug site của họ

Nhoc.Maru
24-11-2011, 10:22
đây là thông tin mình coi bằng debug
http://nf0.upanh.com/b4.s12.d3/0986edc656447414e9a4e32acb63fc4c_38246550.untitled .gif
nhưng mínhuwe dụng curl mà. nó chỉ gửi yêu cầu tới giacaphe.com và nhận lại thông tin html thôi chứ.
làm sao để nó ko biết đó là dùng curl mà là dùng một trình duyệt bình thường duyệt web để nó trả về nội dung của trang index của giá cà phê.

Nhoc.Maru
24-11-2011, 10:24
đây là code của mình
<?php
$url = 'giacaphe.com';

$header_array[0] = 'GET / HTTP/1.1';
$header_array[1]= 'User-Agent: '.$_SERVER['HTTP_USER_AGENT'];
$header_array[2]= "Host: $url";
$header_array[3]= 'Accept: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0';
$header_array[4]= 'Accept-Language: vi-vn,vi;q=0.8,en-us;q=0.5,en;q=0.3';
$header_array[5]= 'Accept-Encoding: gzip,deflate';
$header_array[6]= 'Accept-Charset: UTF-8,*';
$header_array[7]= 'Keep-Alive: 300';
$header_array[8] = 'Connection: keep-alive';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://giacaphe.com/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header_array);
$result = curl_exec($ch);

function gzdecode($data){
$g = tempnam('/tmp','ff');
@file_put_contents($g,$data);
ob_start();
readgzfile($g);
$d = ob_get_clean();
return $d;
}
?>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body>
<textarea cols="800" rows="880">
<?php echo gzdecode($result); ?>
</textarea>
</body>
</html>

code bị lỗi nên mình chưa bóc táy lấy nội dung cần lấy mà lấy cả trang giá cà phê luôn.
nhưng ko được

Nhoc.Maru
26-11-2011, 16:47
mọi người giúp với. .

hoangtk
28-11-2011, 16:53
Hi nhóc,
Trang giacaphe sử dụng javascript để set lại location. CURL không hỗ trợ javascript nên ta chỉ thấy được trang như trên (không phải do firewall). Hiện tại hầu như không có javascript parser cho php. Nếu nhóc dùng java hay .net thì có thể gọi chạy IE hay Chrome... để duyệt và lấy nội dung. Vậy giải pháp cho nhóc là:
1) Dùng java hoặc .net
2) Dùng trang khác giacaphe
3) Sử dụng google api để lấy bản cache của giacaphe :-d