无站点地图时,如何获取网站中符合特定URL模式的所有现有URL列表?
获取特定前缀的网站URL列表(无站点地图时)
如果目标网站没有站点地图,想要获取所有以https://www.example.com/users/开头的有效URL,可以试试以下几种方法:
1. 自定义网页爬虫
通过编写简单的爬虫脚本,遍历网站内的所有链接,筛选出符合前缀规则的URL,同时去重避免重复爬取。
示例Python脚本(基于requests和BeautifulSoup):
import requests from bs4 import BeautifulSoup from urllib.parse import urljoin # 目标URL前缀 target_prefix = "https://www.example.com/users/" # 已访问的URL集合,避免重复爬取 visited = set() # 待爬取的URL队列,从网站首页开始 to_crawl = ["https://www.example.com/"] while to_crawl: current_url = to_crawl.pop() if current_url in visited: continue visited.add(current_url) try: # 发送请求获取页面内容 response = requests.get(current_url, timeout=10) response.raise_for_status() soup = BeautifulSoup(response.text, "html.parser") # 提取页面中所有链接 for link in soup.find_all("a", href=True): full_url = urljoin(target_prefix, link["href"]) # 筛选符合前缀且未被访问过的URL if full_url.startswith(target_prefix) and full_url not in visited: print(full_url) to_crawl.append(full_url) except Exception as e: print(f"爬取 {current_url} 失败: {str(e)}")
注意:爬取前需查看网站的robots.txt规则,控制请求频率,避免触发反爬机制导致IP被封禁。
2. 搜索引擎高级检索
利用搜索引擎的语法,直接检索目标域名下包含指定路径的页面:
- 检索语法示例:
site:example.com inurl:/users/ - 执行搜索后,从搜索结果中提取符合要求的URL即可。不过这种方法可能存在遗漏,因为搜索引擎未必收录了网站的所有页面。
3. 批量构造并验证URL(适用于路径有规律的场景)
如果users/后的部分(如用户名、用户ID)存在规律(比如数字序列、常见用户名),可以批量构造URL,通过HEAD请求快速验证是否有效:
示例Python脚本:
import requests target_prefix = "https://www.example.com/users/" # 可扩展为常见用户名列表、数字序列等 candidate_usernames = ["john", "alice", "bob", "jeff", "sarah"] for username in candidate_usernames: current_url = target_prefix + username try: # 使用HEAD请求仅获取响应头,比GET更高效 response = requests.head(current_url, timeout=5) if response.status_code == 200: print(current_url) except Exception as e: print(f"验证 {current_url} 失败: {str(e)}")
内容的提问来源于stack exchange,提问作者user984621
相关产品推荐
相关产品推荐

