【问题标题】:How to bypass JavaScript redirection by getting content through PHP GET/POST如何通过 PHP GET/POST 获取内容来绕过 JavaScript 重定向
【发布时间】:2011-02-24 11:22:31
【问题描述】:

我尝试通过 PHP 收集 this form 上的 domme 信息 (NOTAM)。

问题是,网站使用 JavaScript 重定向来处理 POST 请求 2 次(在 link 1 上然后在表单地址上(使用 POST),然后将用户再次重定向到表单地址(使用 GET)。

我使用 Firefox Live HTTP Headers 扩展来收集请求日志并试图欺骗发送的标头(主要是 Content-Type、Content-Length 用于 POST,甚至是非标准的 Accept 和 Referer)。

我正在使用 PHP file_get_contents 方法。

代码如下:

第一个请求(POST)

<?php
// POST form fields definition
$donnees = array(
'bResultat' => 'true',
'bImpression' => '',
'ModeAffichage' => 'COMPLET',
'AERO_Date_DATE' => date("Y").'/'.date("m").'/'.date("d"),
'AERO_Date_HEURE' => date("H").':'.((date("i")+10 >= 60) ? 60-date("i")+10 : date("i")+10),
'AERO_Langue' => 'FR',
'AERO_Duree' => '12',
'AERO_CM_REGLE' => '1',
'AERO_CM_GPS' => '2',
'AERO_CM_INFO_COMP' => '1',
'AERO_Tab_Aero[0]' => 'LFQQ',
'AERO_Tab_Aero[1]' => '',
'AERO_Tab_Aero[2]' => '',
'AERO_Tab_Aero[3]' => '',
'AERO_Tab_Aero[4]' => '',
'AERO_Tab_Aero[5]' => '',
'AERO_Tab_Aero[6]' => '',
'AERO_Tab_Aero[7]' => '',
'AERO_Tab_Aero[8]' => '',
'AERO_Tab_Aero[9]' => '',
'AERO_Tab_Aero[10]' => '',
'AERO_Tab_Aero[11]' => ''
);


// Headers encoding function definition
function http_build_headers( $headers ) {

       $headers_brut = '';

       foreach( $headers as $nom => $valeur ) {
               $headers_brut .= $nom . ': ' . $valeur . "\r\n";
       }

       return $headers_brut;
}

// Raw request content creation
$contenu = http_build_query( $donnees );
var_dump($contenu);
echo "<br/>=============<br/>";

// Headers definition
$headers = http_build_headers(
    array(
        'Referer' => 'http://notamweb.aviation-civile.gouv.fr/Script/IHM/Com_Chargement.php?URL=Bul_Aerodrome.php',
        'Content-Type' => 'application/x-www-form-urlencoded',
        'Content-Length' => strlen($contenu)
    )
);
echo strlen($contenu)."<br />=============<br/>";

// Context definition
$options = array(
    'http' => array(
        'user_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13',
        'method' => 'POST',
        'content' => $contenu,
        'header' => $headers
    )
);

// Context creation
$contexte = stream_context_create( $options );

// Sends POST form
$retour = file_get_contents( 'http://notamweb.aviation-civile.gouv.fr/Script/IHM/Bul_Aerodrome.php?AERO_Langue=FR', false, $contexte );

第二个请求 (GET) 如下:

// Headers definition
$headers = http_build_headers(
    array(
        'Accept' => 'text/css,*/*;q=0.1',
        'Referer' => 'http://notamweb.aviation-civile.gouv.fr/Script/IHM/Bul_Aerodrome.php?AERO_Langue=FR'
    )
);

// Context definition
$options = array(
    'http' => array(
        'user_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13',
        'method' => 'GET',
        'header' => $headers
    )
);

// Context creation
$contexte = stream_context_create( $options );

// Sends GET request
$retour = file_get_contents( 'http://notamweb.aviation-civile.gouv.fr/Script/IHM/Bul_Aerodrome.php?AERO_Langue=FR', false, $contexte );

var_dump($retour);
?>

我认为我的问题很明显:PHP 如何检测和管理此类 JavaScript 重定向?有绕过它们的技巧吗?或者有什么其他方法可以实现?

非常感谢

【问题讨论】:

  • 你忘了写你的问题:)
  • 据我所知,PHP 无法解析法语。

标签: php redirect http-headers file-get-contents


【解决方案1】:

答案很简单:Php根本无法检测和管理 JavaScript 重定向

您必须了解 JavaScript 在页面上的作用,并编写一些“模拟” JavaScript 会做什么的 Php 代码(在您的情况下,有点“猜测”有一个重定向,然后再做一个 file_get_contents()) .

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    相关资源
    最近更新 更多