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

网站首页 站群教程 原创站群教程 正文

跟踪301重定向获取落地页域名的php代码

曹操 2023-10-09 原创站群教程 3963 ℃ 48 评论 5660字 free 收藏

很多网站设置了301重定向,禁止游客访问,只允许百度ua真实跳转。

下面的php可以实现规则适配,批量抓取,并保存真实的落地页。

首先我们新建一个url.txt,里面放上域名及规则,一行一个,比如:http://www.zqcx.cn/{数字5}.html

然后我们新建一个php,代码如下:

<?php
// 读取url.txt文件中的域名列表
$urls = file('url.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

// 支持的标签
$tags = [
    '{年}' => date('Y'),
    '{月}' => date('m'),
    '{日}' => date('d'),
    '{时}' => date('H'),
    '{分}' => date('i'),
    '{秒}' => date('s')
];

// 创建一个用于保存301重定向后页面的数组
$redirects = [];

// 遍历域名列表
foreach ($urls as $url) {
    // 替换URL中的标签
    foreach ($tags as $tag => $value) {
        $url = str_replace($tag, $value, $url);
    }
    
    // 匹配并替换{n}为随机数
    preg_match_all('/{数字(\d+)}/', $url, $matches);
    foreach ($matches[1] as $match) {
        $replace = '';
        for ($i = 0; $i < $match; $i++) {
            $replace .= mt_rand(0, 9);
        }
        $url = str_replace('{数字'.$match.'}', $replace, $url);
    }
    
    // 模拟百度蜘蛛访问
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)');
    
    // 添加等待时间(单位:秒)
    $waitTime = 3;
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $waitTime); // 连接超时时间
    curl_setopt($ch, CURLOPT_TIMEOUT, $waitTime); // 总超时时间
    
    curl_exec($ch);
    
    // 获取重定向后的地址
    $redirectUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
    
    // 提取根域名
    $parsedUrl = parse_url($redirectUrl);
    $rootDomain = getRootDomain($parsedUrl['host']);
    
    // 关闭curl请求
    curl_close($ch);
    
    // 判断是否已经存在相同的根域名,如果不存在则添加到数组中
    if (!in_array($rootDomain, $redirects)) {
        $redirects[] = $rootDomain;
    }
}

// 将重定向地址写入301.txt文件
file_put_contents('301.txt', implode(PHP_EOL, $redirects));

echo '完成!';

/**
 * 取得根域名
 * @param string $domain 域名
 * @return string 返回根域名
 */
function getRootDomain($domain) {
    $re_domain = "";
    $domain_postfix_cn_array = array("com", "net", "org", "gov", "edu", "icu","top","com.cn", "cn");
    $array_domain = explode(".", $domain);
    $array_num = count($array_domain) - 1;
    
    if ($array_domain[$array_num] == 'cn') {
        if (in_array($array_domain[$array_num - 1], $domain_postfix_cn_array)) {
            $re_domain = $array_domain[$array_num - 2] . "." . $array_domain[$array_num - 1] . "." . $array_domain[$array_num];
        } else {
            $re_domain = $array_domain[$array_num - 1] . "." . $array_domain[$array_num];
        }
    } else {
        $re_domain = $array_domain[$array_num - 1] . "." . $array_domain[$array_num];
    }
    
    return $re_domain;
}
?>

我们访问上面的php文件,即可实现抓取url.txt里面的网站,它会自动获取301后的目标页面,自动去重,只保留根域名在301.txt中。


Tags:蜘蛛域名301重定向跳转

必看说明

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

已有48位网友发表了看法:

欢迎 发表评论:

网站分类
近期评论
文章归档
标签列表
站点信息
  • 文章总数:2024
  • 页面总数:7
  • 分类总数:46
  • 标签总数:339
  • 评论总数:9367
  • 浏览总数:5890750