我怎样才能得到这个真实的链接

时间:2015-02-05 07:13:36

标签: javascript php simple-html-dom

我正在使用简单的HTML Dom,我很容易得到href链接,但这不是实际的链接,当我点击它在新窗口打开的链接并且长网址转换为短链接或真实链接时我想要这个链接请帮助我如何获得这个真正的链接。

以下是使用Simple HTML DOM

获得的代码
<a href="/external.php?title=Camp+Massacre&amp;url=aHR0cDovL3ZpZHppLnR2L2Z3eWM4bmZreDJ3eC5odG1s&amp;domain=dmlkemkudHY=&amp;loggedin=1" onclick="return  addHit('1894159921', '1')" rel="nofollow" title="Watch Version 1 of Camp Massacre" target="_blank">Version 1</a>

点击链接后,它会在新窗口中加载此链接,我想要这个真正的链接。

http://vidzi.tv/fwyc8nfkx2wx.html

1 个答案:

答案 0 :(得分:1)

首先,希望我明白你的意思,特别是&#34;真正的链接&#34;。

在您的情况下,网址可能最初类似于http://www.aaa.com/aaa/bbb/ccc/ddd.php?id=1234567890 当您打开页面时,它会变为http://www.aaa.com/aaa/bbb/ccc/eee.php

这可能是因为服务器根据您的原始网址将您重定向到另一个页面。由于这是服务器端问题,因此作为客户端,您可能无法知道重定向的位置。

另一个可能的原因是服务器使用.htaccess文件重写您的URL。您可以从herehere

获取更多信息

关于登录问题,某些服务器会读取cookie或保留会话变量。因此,您必须创建cookie或会话信息并与您一起发送请求,以便您可以获得真实链接&#34;。

<小时/> 我认为你被重定向,如上所述。

假设基本网址为http://www.aaa.com 访问它时,您会看到标签。 href包含值/external.php?title=Camp+Massacre&amp;url=aHR0cDovL3ZpZHppLnR2L2Z3eWM4bmZreDJ3eC5odG1s&amp;domain=dmlkemkudHY=&amp;loggedin=1 然后组合基本URL和href。但是,这不能给你http://vidzi.tv/fwyc8nfkx2wx.html因为你正在访问一个php而服务器端php程序会将你重定向到html页面。

关于使用php重定向,this可能对您的理解有所帮助

<小时/> 假设您使用AJAX,请参阅Matt的answer。他建议使用getResponseHeader('Location'),我尝试在我的wamp服务器上使用以下网页

=====>page_1.html
<html>
    <title>Page 1</title>
    <body>
        <p>This is page 1</p>
        <a href="ext.php" target="_blank">another page</a>
    </body>
</html>

=====>page_2.html
<html>
    <title>Page 2</title>
    <body>
        <p>This is page 2</p>
    </body>
</html>

=====>ext.php
<?php
header('Location: http://localhost/testing/page_2.html');
?>

=====> page_3.html
<html>
    <title>Page 3</title>
    <script>
    function loadXMLDoc(){
        var xmlhttp;
        if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        }else{// code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }

        xmlhttp.onreadystatechange = function(){
            alert("Status Text: " + xmlhttp.status + "; " + xmlhttp.statusText);
            alert(xmlhttp.getAllResponseHeaders());

            if (xmlhttp.readyState==4 && xmlhttp.status==200){
                alert("Response text: " + xmlhttp.responseText);
            }
        }
        xmlhttp.open("GET","ext.php",true);
        xmlhttp.send();
    }
    </script>

    <body>
        <p onclick="loadXMLDoc();">load</p>
    </body>
</html>

预计点击文字&#34;加载&#34;在page_3.html中导致访问ext.php,我将被重定向到page_2.html。根据Matt的说法,如果我的工作是正确的,我可以获得&#34;位置&#34;来自标题的属性。

在这种情况下,我使用firefox来测试它,我可以在page_2.html中获取html内容,但是如果我使用opera就会失败。在这两种情况下,我都看不到&#34;位置&#34;来自响应头的属性,我相信这与服务器如何写响应头有关。这再次意味着它将成为服务器端问题。祝你好运!