首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获得bing.com/ck/a页面的真实网页?

如何获得bing.com/ck/a页面的真实网页?
EN

Stack Overflow用户
提问于 2022-08-05 14:36:30
回答 1查看 247关注 0票数 0

我试图以编程方式找到bing链接的最终目的地:

https://www.bing.com/ck/a?!&&p=e8e1e7228136c509JmltdHM9MTY1OTM5MTI0MiZpZ3VpZD1jY2RlYTU1Yy1kYzRkLTRjNjctOTIwMC1hZTUwYTk4M2QyNzImaW5zaWQ9NTcwOQ&ptn=3&hsh=3&fclid=62b91a1d-11e5-11ed-88df-bbbd25b14f27&u=a1aHR0cHM6Ly93d3cuZGFuaWVsc2h2YWMuY29tLw&ntb=1

在浏览器上,这将重定向到https://www.danielshvac.com/

但是,如果我试图通过假设第一个重定向到第二个重定向来找到那个网站,我只看到没有重定向。

怎么回事,我怎样才能找到这些bing.com/ck/a链接的最终目的地?

代码:

基于this SO answer

代码语言:javascript
运行
复制
r = requests.get('https://www.bing.com/ck/a?!&&p=e8e1e7228136c509JmltdHM9MTY1OTM5MTI0MiZpZ3VpZD1jY2RlYTU1Yy1kYzRkLTRjNjctOTIwMC1hZTUwYTk4M2QyNzImaW5zaWQ9NTcwOQ&ptn=3&hsh=3&fclid=62b91a1d-11e5-11ed-88df-bbbd25b14f27&u=a1aHR0cHM6Ly93d3cuZGFuaWVsc2h2YWMuY29tLw&ntb=1') 
print(r.url) # https://www.bing.com/ck/a?!&&p=e8e1e7228136c509JmltdHM9MTY1OTM5MTI0MiZpZ3VpZD1jY2RlYTU1Yy1kYzRkLTRjNjctOTIwMC1hZTUwYTk4M2QyNzImaW5zaWQ9NTcwOQ&ptn=3&hsh=3&fclid=62b91a1d-11e5-11ed-88df-bbbd25b14f27&u=a1aHR0cHM6Ly93d3cuZGFuaWVsc2h2YWMuY29tLw&ntb=1

基于this SO answer

代码语言:javascript
运行
复制
response = requests.get(https://www.bing.com/ck/a?!&&p=e8e1e7228136c509JmltdHM9MTY1OTM5MTI0MiZpZ3VpZD1jY2RlYTU1Yy1kYzRkLTRjNjctOTIwMC1hZTUwYTk4M2QyNzImaW5zaWQ9NTcwOQ&ptn=3&hsh=3&fclid=62b91a1d-11e5-11ed-88df-bbbd25b14f27&u=a1aHR0cHM6Ly93d3cuZGFuaWVsc2h2YWMuY29tLw&ntb=1)
if response.history:
    print("Request was redirected")
    for resp in response.history:
        print(resp.status_code, resp.url)
    print("Final destination:")
    print(response.status_code, response.url)
else:
    print("Request was not redirected") # this is printed

更新:通过curl读取链接的内容,我可以看到您得到了一个HTML,其中包含了一些重定向函数,我猜这就是为什么没有真正的重定向。

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="referrer" content="origin-when-cross-origin">
    <script>//<![CDATA[
      var s = false;
      function l() {
        setTimeout(f, 10000);
        if (document.referrer) {
          try {
            var pm = /(^|&|\?)px=([^&]*)(&|$)/i;
            var px = window.location.href.match(pm);
            var rs = document.referrer;
            if (px != null) {
              if (rs.match(pm))
                rs = rs.replace(pm, "$1px=" + px[2] + "$3");
              else if (rs.indexOf("?") != -1)
                rs = rs + "&px=" + px[2];
              else
                rs = rs + "?px=" + px[2];
            }
            history.replaceState({}, "Bing", rs);
            window.addEventListener("pageshow", function(e) { if (e.persisted || (typeof window.performance != "undefined" && window.performance.navigation.type === 2)) window.location.reload(); });
            s = true;
            setTimeout(r, 10);
            return;
          } catch (e) {}
        }
        r();
      }
      function r() {
        var u = "https://www.danielshvac.com/";
        if (s)
          window.location.href = u;
        else
          window.location.replace(u);
      }
      function f() {
        document.getElementById("fb").style.display = "block";
      }
      //]]>
    </script>
  </head>
  <body onload="l()">
    <div id="fb" style="display: none">
      Please <a href="https://www.bing.com/ck/a?!&&p=e8e1e7228136c509JmltdHM9MTY1OTM5MTI0MiZpZ3VpZD1jY2RlYTU1Yy1kYzRkLTRjNjctOTIwMC1hZTUwYTk4M2QyNzImaW5zaWQ9NTcwOQ&ptn=3&hsh=3&fclid=62b91a1d-11e5-11ed-88df-bbbd25b14f27&u=a1aHR0cHM6Ly93d3cuZGFuaWVsc2h2YWMuY29tLw&ntb=F">click here</a> if the page does not redirect automatically ...
    </div>
  </body>
</html>

现在,尝试找出如何执行此操作并获取链接

EN

回答 1

Stack Overflow用户

发布于 2022-08-05 15:08:51

由于curl输出显示HTML-文档中的脚本已经包含目标url,所以只需使用一行Python代码即可解压缩它。

代码语言:javascript
运行
复制
r.content.decode().split("var u = ")[1].split("\";")

这将在URL-变量的初始化时拆分请求的内容(从curl中得到的内容),然后再在该变量的末尾分割请求的内容,因此您将只获得目标-URL。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73251425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档