zoukankan      html  css  js  c++  java
  • 【转】百度搜索结果url加密算法 python源码

    百度搜索结果都是加密过的,比如:

    baidu.com/link?url=a3f48d30fc293c5e471ef23de092fddc99e8cd902143baf828cbc787e08f0e3f3c49a8f7

    以下就是用python实现加密的方法,此方法的缺点是无法加密https的链接,算是比较老的算法,但是仍然可以用(常被seo人士用于shua排名等领域)。

    import os
    ascii = [
     [
      ' ', '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.', '/'],
     [
      '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?'],
     [
      '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O'],
     [
      'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\', ']', '^', '_'],
     [
      '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o'],
     [
      'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', ' ']]
    data = [
     [
      13, 10],
     [
      10, 1],
     [
      16, 15],
     [
      7, 6],
     [
      5, 13],
     [
      18, 9],
     [
      13, 11],
     [
      7, 12],
     [
      10, 5],
     [
      15, 9],
     [
      15, 9],
     [
      13, 5],
     [
      16, 11],
     [
      0, 1],
     [
      8, 2],
     [
      8, 5],
     [
      0, 0],
     [
      17, 15],
     [
      14, 8],
     [
      2, 1],
     [
      10, 5],
     [
      17, 14],
     [
      16, 5],
     [
      3, 8],
     [
      14, 9],
     [
      5, 8],
     [
      15, 1],
     [
      3, 15],
     [
      13, 10],
     [
      10, 12],
     [
      5, 7],
     [
      0, 2],
     [
      18, 14],
     [
      0, 15],
     [
      1, 6],
     [
      13, 5],
     [
      2, 1],
     [
      15, 14],
     [
      18, 8],
     [
      18, 9],
     [
      1, 10],
     [
      14, 14],
     [
      13, 2],
     [
      5, 3],
     [
      5, 8],
     [
      0, 4],
     [
      1, 5],
     [
      16, 1],
     [
      8, 1],
     [
      2, 5],
     [
      10, 7],
     [
      10, 15],
     [
      14, 14],
     [
      17, 3],
     [
      15, 0],
     [
      14, 5],
     [
      7, 7],
     [
      3, 4],
     [
      14, 8],
     [
      12, 0],
     [
      13, 12],
     [
      12, 3],
     [
      6, 5],
     [
      3, 1],
     [
      1, 14],
     [
      5, 4],
     [
      0, 12],
     [
      7, 0],
     [
      10, 7],
     [
      15, 12],
     [
      8, 2],
     [
      18, 15],
     [
      3, 12],
     [
      1, 12],
     [
      0, 15],
     [
      17, 4],
     [
      17, 2],
     [
      11, 1],
     [
      3, 12],
     [
      11, 5],
     [
      0, 13],
     [
      1, 1],
     [
      2, 12]]
    y = [
     '0123456789abcdef',
     '1032547698badcfe',
     '23016745ab89efcd',
     '32107654ba98fedc',
     '45670123cdef89ab',
     '54761032dcfe98ba',
     '67452301efcdab89',
     '76543210fedcba98',
     '89abcdef01234567',
     '98badcfe10325476',
     'ab89efcd23016745',
     'ba98fedc32107654',
     'cdef89ab45670123',
     'dcfe98ba54761032',
     'efcdab8967452301',
     'fedcba9876543210']
    x = [
     '016745',
     '107654',
     '234567',
     '321076',
     '325476',
     '452301',
     '543210',
     '670123',
     '765432',
     '761032',
     '89abcd',
     '89efcd',
     '98fedc',
     'abcdef',
     'badcfe',
     'cdab89',
     'dcba98',
     'ef89ab',
     'fe98ba']
     
    def encode_url(url):
        print(url)
        url_re = ''
        mi = ''
        for i, ch in enumerate(url):
     
            f_real_x = None
            f_real_y = None
            for real_x, real_y_chs in enumerate(ascii):
                for real_y, real_y_ch in enumerate(real_y_chs):
                    if real_y_ch == ch:
                        f_real_x = real_x
                        f_real_y = real_y
     
            if f_real_y is not None and f_real_x is not None:
                this_data_x = x[data[i][0]]
                encode_x = this_data_x[f_real_x]
                mi = mi + encode_x
                this_data_y = y[data[i][1]]
                encode_y = this_data_y[f_real_y]
                mi = mi + encode_y
     
        return 'http://www.baidu.com/link?url=a3f48d30fc293c5e471ef23de092fddc99' + mi
     
     
    if __name__ == '__main__':
        t = encode_url("69tianqi.com");
        print(t)

    python执行结果

    blog.csdn.net/miigo
    http://www.baidu.com/link?url=a3f48d30fc293c5e471ef23de092fddc99e8cd902143baf828cbc787e08f0e3f3c49a8f7

    访问网址即可正常跳转。

    另外,如何获取加密之后的真实地址就简单多了,直接http访问加密后的地址,获取返回头部里的301跳转地址就行了。

    <?php
    $url = "http://www.baidu.com/link?url=nS2MGJqjJ4zBBpC8yDF8xDh8vibi1lVeE7gGr9UONBu";
    
    $info = parse_url($url);
    $fp = fsockopen($info['host'], 80,$errno, $errstr, 30);
    fputs($fp,"GET {$info['path']}?{$info['query']} HTTP/1.1
    ");
    fputs($fp, "Host: {$info['host']}
    ");
    fputs($fp, "Connection: close
    
    ");
    $rewrite = '';
    while(!feof($fp)) {
        $line = fgets($fp);
        if($line != "
    " ) {
            if(strpos($line,'Location:') !== false) {
                $rewrite = str_replace(array("
    ","
    ","Location: "),'',$line);
            }
        }else {
            break;
        }
    }
    var_dump($rewrite); //结果显示:string(22) "http://www.google.com/" 
    ?>

    from: https://blog.csdn.net/miigo/article/details/108578094

    文章乃参考、转载其他博客所得,仅供自己学习作笔记使用!!!
  • 相关阅读:
    【Java EE 学习 36】【struts2】【struts2系统验证】【struts2 ognl值栈】【struts2 ongl标签】【struts2 UI标签】【struts2模型驱动和令牌机制】
    【Java EE 学习 35 下】【struts2】【struts2文件上传】【struts2自定义拦截器】【struts2手动验证】
    【Java EE 学习 35 上】【strus2】【类型转换器】【struts2和Servlet API解耦】【国际化问题】【资源文件乱码问题已经解决】
    【Java EE 学习 34】【struts2学习第一天】
    【JavaScript中的正则表达式】
    【Java EE 学习 33 下】【validate表单验证插件】
    【Java EE 学习 33 上】【JQuery样式操作】【JQuery中的Ajax操作】【JQuery中的XML操作】
    【Java EE 学习 32 下】【JQuery】【JQuey中的DOM操作】
    【Java EE 学习 32 上】【JQuery】【选择器】
    【Java EE 学习 31】【JavaScript基础增强】【Ajax基础】【Json基础】
  • 原文地址:https://www.cnblogs.com/xuan52rock/p/14738443.html
Copyright © 2011-2022 走看看