【问题标题】:PHP Curl wrong redirectPHP Curl 错误重定向
【发布时间】:2014-10-02 23:46:48
【问题描述】:

我以前在一个网站上获取一些信息,使用curl登录并显示信息,但现在该网站使用cloudflare。问题是我无法遵循重定向,因为该网站使用 javascript。

我认为解决起来很简单,因为我在本地主机上使用 php curl,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>

【问题讨论】:

  • 您永远不会让 cURL 以任何开箱即用的方式跟随 javascript 重定向。您必须为 javascript 解析文档并尝试从那里收集(如果可能的话)重定向会将您发送到的位置。

标签: javascript php redirect curl cloudflare


【解决方案1】:

“消息“在访问示例之前检查您的浏览器。”将我重定向到“

无论您在做什么都会触发网站上的 DDoS 规则和/或网站所有者已决定启用该功能。

如果网站同意你做你正在做的事情,你应该要求网站所有者将你做这件事的 IP 列入白名单。

【讨论】:

    猜你喜欢
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 2012-05-04
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多