PHP Curl错误重定向
问题描述:
我曾经在网站上使用curl登录并显示信息,但现在网站正在使用cloudflare。问题是我无法遵循重定向,因为该网站使用JavaScript。PHP Curl错误重定向
我认为它可以很简单的解决,因为我使用PHP卷曲在本地主机上,并在5秒消息“访问例如之前检查你的浏览器。”后转到我:www.localhost/LINKOFTHEREDIRECT而不是去www.example.com/LINKOFTHEREDIRECT并向我显示正确的网页。
这里是我的代码:
<?php
$url0 = "http://example.com/login.php";
$url = "http://example.com/pageIwant.php";
$user_agent='Mozilla/5.0 (Windows NT 6.3; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0';
$options = array(
CURLOPT_USERAGENT => $user_agent, //set user agent
CURLOPT_COOKIESESSION => true, // enable cookies
CURLOPT_COOKIEFILE =>"C:/Program Files/XAMPP/htdocs/cp/cookies.txt", //set cookie file
CURLOPT_COOKIEJAR =>"C:/Program Files/XAMPP/htdocs/cp/cookies.txt", //set cookie jar
CURLOPT_CUSTOMREQUEST =>"GET", //set request type post or get
CURLOPT_POST =>false, //set to GET
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => "", // handle all encodings
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 20, // timeout on connect
CURLOPT_TIMEOUT => 20, // timeout on response
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
);
$ch0 = curl_init($url0);
curl_setopt_array($ch0, $options);
$content0 = curl_exec($ch0);
curl_close($ch0);
$ch = curl_init($url);
curl_setopt_array($ch, $options);
$content = curl_exec($ch);
$err = curl_errno($ch);
$errmsg = curl_error($ch);
$header = curl_getinfo($ch);
curl_close($ch);
$header['errno'] = $err;
$header['errmsg'] = $errmsg;
$header['content'] = $content;
echo $content; ?>
这里是JavaScript:
<script type="text/javascript">
//<![CDATA[
(function() {
var a = function() {
try {
return !!window.addEventListener
} catch (e) {
return !1
}
},
b = function(b, c) {
a() ? document.addEventListener("DOMContentLoaded", b, c) : document.attachEvent("onreadystatechange", b)
};
b(function() {
var a = document.getElementById('cf-content');
a.style.display = 'block';
setTimeout(function() {
var t, r, a, f, YvDgwfU = {
"uxTkX": +((+!![] + []) + (!+[] + !![]))
};
t = document.createElement('div');
t.innerHTML = "<a href='/'>x</a>";
t = t.firstChild.href;
r = t.match(/https?:\/\//)[0];
t = t.substr(r.length);
t = t.substr(0, t.length - 1);
a = document.getElementById('jschl-answer');
f = document.getElementById('challenge-form');;
YvDgwfU.uxTkX *= +((!+[] + !![] + !![] + !![] + []) + (!+[] + !![] + !![] + !![]));
YvDgwfU.uxTkX -= +((+!![] + []) + (!+[] + !![] + !![] + !![] + !![] + !![] + !![]));
YvDgwfU.uxTkX -= +((!+[] + !![] + !![] + !![] + !![] + []) + (+[]));
a.value = parseInt(YvDgwfU.uxTkX, 10) + t.length;
f.submit();
}, 5850);
}, false);
})();
//]]>
</script>
答
“消息 ”访问例如之前检查你的浏览器“ 重定向我”
不管你这样做会触发网站上的DDoS规则,并且/或者网站所有者已决定开启该功能。
如果网站可以与您一起做自己正在做的事情,您应该要求网站所有者将您所从事的IP列入白名单。
你永远不会得到cURL以任何开箱即用的方式遵循JavaScript重定向。你将不得不解析JavaScript的文件,并尝试从那里收集(如果可能)重定向将发送给你的地方。 – 2014-10-03 18:26:36