豆米软件

2011起服务SEO站长至今


百度搜索结果url加密算法 python源码

百度搜索结果url加密算法 python源码

2020-09-15

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

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("blog.csdn.net/miigo");
    print(t)


python执行结果

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

访问网址即可正常跳转。

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