10/10/2018, 11:33
[Hỏi] Sử dụng Curl bị đẩy qua trang khác ?
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 ?
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 ?
Bài liên quan
vậy có cách nào qua mặt nó không mọi người ?
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ọ
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ê.
<?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
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