本站所有内容仅限用于学习和研究目的,如有侵权请邮件与我们联系处理!
世上事本无难易,为之则易!

网站首页 站长资讯 正文

完整注解失效的url链接加解密php

曹操 2023-06-22 站长资讯 465 ℃ 0 评论 11455字 free 收藏

前两年有关于百度反推的神级操作,其中一个难点就是百度对所有收录链接进行了加密转化,而链接地址基本上采用了 "/link?url=xxx" 的格式。

下文是旧版本的加密代码,几年前就已经失效,但加上了完整的注解,分享给大家。

使用方法:将文件放在某个网站根目录,访问该文件?url=你的网址

<?php

// 检查是否提供了 GET 请求参数 "url"
if($_GET["url"]){
    // 如果提供了 "url" 参数,调用 encryption 函数对其进行加密,并输出结果
    echo encryption($_GET["url"]);
} else {
    // 如果没有提供 "url" 参数,输出提示信息
    echo "请输入URL";
}

// 判断一个参数是否为空或者为非数字,如果是返回 true,否则返回 false
function _empty($param){
    if (empty($param) && !is_numeric($param)) {
        return true;
    } else {
        return false;
    }
}
 
// 对输入的字符串进行加密操作,并返回加密后的结果
function encryption($domain) {
    // 如果参数为空,直接返回
    if (empty($domain)) return $domain;

    //$ascii 码表的 x,y 位置,每个字符占据一个位置
    $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 数组存储每个字符在 ascii 码表的位置,每个元素是一个二维数组
    // data 数组共有 90 个元素,每个元素包含两个值,
    // 第一个值表示要加密的字符在 $x 数组中的索引
    // 第二个值表示要加密的字符在 $y 数组中的索引
    $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 和 $x 数组分别表示加密后的横坐标和纵坐标,每个元素是一个字符串
    // y 和 x 数组各有 16 个元素,每个元素表示一个 4 位的 16 进制数
    $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'
    ];

    // 解密过程
    $len = strlen($domain);
    $mi = '';
    for($i=0; $i < $len; $i++) {
        $ch  = substr($domain, $i, 1); // 得到一个字符
        $f_real_x = '';
        $f_real_y = '';
        // 找到字符在 $ascii 数组中的位置
        foreach ($ascii as $real_x => $real_y_chs) {
            foreach ($real_y_chs as $real_y => $real_y_ch) {
                if ($real_y_ch == $ch) { // 如果找到该字符在 $ascii 数组中的位置,就将其坐标赋值给 $f_real_x 和 $f_real_y
                    $f_real_x = $real_x;
                    $f_real_y = $real_y;
                    break;
                }
            }
        }

        // 如果字符在 $ascii 数组中的位置存在且不为空,就将其加密
        if (!_empty($f_real_x) && !_empty($f_real_y)) {
            // 根据 $data 数组找到加密后的 x 和 y 值
            $this_data_x = $x[$data[$i][0]]; // 找到第 i 个字符对应的 $x 数组的元素
            $encode_x = $this_data_x[$f_real_x]; // 取出该元素中 $f_real_x 索引对应的字符作为加密后的横坐标

            $mi .= $encode_x;

            $this_data_y = $y[$data[$i][1]]; // 找到第 i 个字符对应的 $y 数组的元素
            $encode_y = $this_data_y[$f_real_y]; // 取出该元素中 $f_real_y 索引对应的字符作为加密后的纵坐标

            $mi .= $encode_y;
        }
    }

    // 返回加密后的 URL
    return 'https://www.baidu.com/link?url=a3f48d30fc293c5e471ef23de092fddc99'.$mi;
}

Tags:百度反推根目录

必看说明

  • 本站中所有被研究的素材与信息全部来源于互联网,版权争议与本站无关。
  • 本站文章或仅为文本内容原创,非程序原创。如有侵权、不妥之处,请联系站长第一时间删除。敬请谅解!
  • 本站所有内容严格遵守国家法律的条例,所有研究的算法技术均来源于搜索引擎公开默认允许用户研究使用的接口。
  • 阅读本文及获取资源前,请确保您已充分阅读并理解《访问曹操SEO网站需知:行为准则》。
  • 本站分享的任何工具、程序仅供学习参考编写架构,仅可在本地的虚拟机内断网测试,严禁联网运行或上传搭建!
  • 任何资源必须在下载后24个小时内,从电脑中彻底删除。不得传播或者用于其他任何用途!否则一切后果用户自负!
  • 转载请注明 : 文章转载自  曹操SEO 完整注解失效的url链接加解密php
  • 本文标题:《完整注解失效的url链接加解密php》
  • 本文链接:https://www.ccooc.cn/2003.html

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

网站分类
近期评论
文章归档
标签列表
站点信息
  • 文章总数:2022
  • 页面总数:7
  • 分类总数:46
  • 标签总数:340
  • 评论总数:27592
  • 浏览总数:5355403