批量获取学校域名子

python安全开发

python安全开发

  • python安全开发
  • 前言
  • 一、平台edu
  • 二、使用步骤
    • 1.引入库
    • 2.功能
    • **完整代码**
    • 完整代码
  • 总结


前言

目的:想快速的搜集edu的域名

一、平台edu

https://src.sjtu.edu.cn/rank/firm/0/?page=2

二、使用步骤

1.引入库

代码如下(示例):

Get_EduName.py

import requests //爬虫
from bs4 import BeautifulSoup //提取数据
from concurrent.futures import ThreadPoolExecutor, as_completed  //多进程
import csv //csv

2.功能

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mAepcfID-1720229806355)(https://i-blog.csdnimg.cn/direct/af3a9e0b89ff41fdb77517e31a79dc12.png)]

def get_edu_name(page):url = f'https://src.sjtu.edu.cn/rank/firm/0/?page={page}'try:print(f'正在获取第{page}页的数据...')response = requests.get(url)if response.status_code == 200:soup = BeautifulSoup(response.text, 'lxml')edu1 = soup.find_all('td', attrs={'class': 'am-text-center'})edu_names = []for td in edu1: //找到tdif td.a:  //找到a标签institution_name = td.a.get_text()edu_names.append(institution_name)return edu_nameselse:print(f'Failed to retrieve page {page}. Status code: {response.status_code}')return []except Exception as e:print(f'Failed to retrieve page {page}: {e}')return []

写入数据

def extract_unique_universities(filename):unique_universities = set()universities_list = []with open(filename, 'r', encoding='utf-8-sig') as f:reader = csv.reader(f)for row in reader:if row:  # 确保行不为空university_name = row[0].strip()  # 取第一列数据,并去除空格if university_name not in unique_universities:unique_universities.add(university_name)universities_list.append(university_name)return universities_list
if __name__ == '__main__':max_pages = 100  # 设置要获取的页面数edu_names = get_all_edu_names(max_pages)save_edu_names_to_csv(edu_names, 'edu.csv')print("学校名称已保存到 edu.csv 文件中。")filename = 'edu.csv'  # 替换为你的 CSV 文件路径universities = extract_unique_universities(filename)print("提取的大学数据:")for university in universities:print(university)with open('university.txt', 'a+', encoding='utf-8') as f:f.write(university + '\n')

完整代码

import requests
from bs4 import BeautifulSoup
from concurrent.futures import ThreadPoolExecutor, as_completed
import csvdef get_edu_name(page):url = f'https://src.sjtu.edu.cn/rank/firm/0/?page={page}'try:print(f'正在获取第{page}页的数据...')response = requests.get(url)if response.status_code == 200:soup = BeautifulSoup(response.text, 'lxml')edu1 = soup.find_all('td', attrs={'class': 'am-text-center'})edu_names = []for td in edu1:if td.a:institution_name = td.a.get_text()edu_names.append(institution_name)return edu_nameselse:print(f'Failed to retrieve page {page}. Status code: {response.status_code}')return []except Exception as e:print(f'Failed to retrieve page {page}: {e}')return []def get_all_edu_names(max_pages):all_edu_names = []with ThreadPoolExecutor() as executor:futures = [executor.submit(get_edu_name, page) for page in range(1, max_pages + 1)]for future in as_completed(futures):edu_names = future.result()all_edu_names.extend(edu_names)return all_edu_namesdef save_edu_names_to_csv(edu_names, filename):with open(filename, 'w', newline='', encoding='utf-8-sig') as f:writer = csv.writer(f)for name in edu_names:writer.writerow([name])def extract_unique_universities(filename):unique_universities = set()universities_list = []with open(filename, 'r', encoding='utf-8-sig') as f:reader = csv.reader(f)for row in reader:if row:  # 确保行不为空university_name = row[0].strip()  # 取第一列数据,并去除空格if university_name not in unique_universities:unique_universities.add(university_name)universities_list.append(university_name)return universities_list
if __name__ == '__main__':max_pages = 100  # 设置要获取的页面数edu_names = get_all_edu_names(max_pages)save_edu_names_to_csv(edu_names, 'edu.csv')print("学校名称已保存到 edu.csv 文件中。")filename = 'edu.csv'  # 替换为你的 CSV 文件路径universities = extract_unique_universities(filename)print("提取的大学数据:")for university in universities:print(university)with open('university.txt', 'a+', encoding='utf-8') as f:f.write(university + '\n')

Get_Edu_domain.py
原理从bing里面搜索关键字,提取网址,写入csv

完整代码

import requests
from bs4 import BeautifulSoup
import csv
import tldextract
import concurrent.futuresGet_Edu_domain.pyheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0','cookie': 'MUID=32957CB67A1A615722B972087B656099'
}university_list = []with open('university.txt', 'r', encoding='utf-8') as f:for line in f:university_list.append(line.strip().replace(' ', '+'))with open('university_results.csv', 'w', newline='', encoding='utf-8-sig') as csvfile:csvwriter = csv.writer(csvfile)csvwriter.writerow(['大学', '网址', '子域名'])  def process_site(site):url = f'https://www.bing.com/search?q=intitle%3a{site}&mkt=zh-CN&FPIG=0B6AED8B37BF44B78B8F58E6A949DB10&first=1&FORM=PERE'print(f"正在搜索: {site}")try:response = requests.get(url, headers=headers)print(f"状态码: {response.status_code}")response.encoding = 'utf-8'soup = BeautifulSoup(response.text, 'lxml')results = soup.find_all('h2')found_valid_result = Falsefor result in results:try:u = result.a.get('href')print(f"网址: {u}")# 提取子域名extracted = tldextract.extract(u)if extracted.subdomain:domain = f"{extracted.subdomain}.{extracted.domain}.{extracted.suffix}"if '.edu.cn' in domain or domain.endswith('.edu.cn'):csvwriter.writerow([site, u, domain]) found_valid_result = Truebreak  except Exception as e:print(f"提取网址时出错: {e}")if not found_valid_result:print("未找到有效的搜索结果。")csvwriter.writerow([site, '未找到有效结果', ''])  except requests.RequestException as e:print(f"请求失败: {e}")csvwriter.writerow([site, f"请求失败: {e}", ''])  except Exception as e:print(f"出错: {e}")csvwriter.writerow([site, f"出错: {e}", '']) with concurrent.futures.ThreadPoolExecutor() as executor:executor.map(process_site, university_list)

效果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sm0MV4S6-1720229806356)(https://i-blog.csdnimg.cn/direct/9395a2cee2664aaf889ee715df20b8cc.png)]
可以使用这里的子域名写入到一个文件
可以使用subfinder,httpx,ksubdomain,

./subfinder -d baidu.com -silent|./ksubdomain -verify -silent|./httpx -title -content-length -status-code -o url.html -html

总结

可以批量打edu的域名,快速上分edu

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/42079.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DHCP服务器

目录 网络传输原则: DHCP: DHCP作用: 优缺点: DHCP的原理: 用虚拟机模拟DHCP服务器​编辑​编辑 网络传输原则: 网络是双向的,网络是有方向的 解释:网络是双向的: …

DataWhaleAI分子预测夏令营 学习笔记

AI分子预测夏令营学习笔记 一、直播概览 主持人介绍 姓名:徐翼萌角色:DataWhale助教活动目的:分享机器学习赛事经验,提升参赛者在分子预测领域的能力 嘉宾介绍 姓名:余老师背景:Data成员,腾…

力扣1878.矩阵中最大的三个菱形和

力扣1878.矩阵中最大的三个菱形和 斜前缀和 遍历矩阵元素&#xff0c;同时求当前点左下右下两位置的前缀和枚举每个菱形中心&#xff0c;遍历边长 int sum1[101][101];int sum2[101][101];class Solution {public:vector<int> getBiggestThree(vector<vector<in…

[SAP ABAP] MM模块常用的Table

MM模块围绕的核心是对物料进行一系列的操作 MM模块包含两大功能:采购管理和库存管理 MM模块的数据分为三大类: ① 组织结构数据 ② 主数据 ③ 业务流程数据 支撑企业经营活动的数据&#xff0c;我们可以把该数据称为主数据(主数据是进行一切业务行为的基础) 企业经营活动产生…

大数据中的常见数据问题:独断脏

想象你刚刚入职一家声称正在进行"数字化转型"的大型企业,担任大数据开发工程师。在入职的第一周,你满怀热情,迫不及待地想要大展拳脚,用你的技能来推动公司的数据驱动决策。 目录 大数据中的常见数据问题1. 独 - 数据孤岛2. 断 - 数据价值链断层3. 缺 - 标准、治理…

如何搜索查找ICLR论文

记录有几个查找顶级会议文章的网址&#xff0c;不止ICLR ICLR 2024 还会有visualization模式&#xff1a; ICLR 2024 virtual 这个网站也很棒 Paper Copilot ICLR 2024 当然还有一个用图表示各论文相关关系的网站&#xff1a; connected papers

WACV2023论文速览Attention注意力机制相关

Paper1 ScoreNet: Learning Non-Uniform Attention and Augmentation for Transformer-Based Histopathological Image Classification 摘要原文: Progress in digital pathology is hindered by high-resolution images and the prohibitive cost of exhaustive localized an…

2、图形验证码

1、图形验证码设计 1.1思路 现今&#xff0c;市面上的图形验证码付费的&#xff0c;免费的多种多样&#xff0c;主要形式有滑动拼图、文字点选、语序点选、字体识别、空间推理、智能随机等。 而处理也分为web端和sever端两部分 此处以免费的kaptcha 为例&#xff0c;进行数字图…

电机控制杂谈——增量式的预测电流控制的优势在哪?

1.前言 前几天看到这么个问题。“模型预测控制如何消除静态误差” 评论说用增量式的预测控制。 这个回答让我想起来我大四下看的这篇论文。现在都一百多被引用了。 但是苦于当时能力有限&#xff0c;没办法复现这个文章。 所以现在想重新验证一下。 2.静态误差和电机磁链有…

36.哀家要长脑子了!--高精度的+-*/

1.791. 高精度加法 - AcWing题库 思路&#xff1a;把大数的每一位数当作数组的元素存入到数组中。倒序存储也是说&#xff0c;个位放在下标为0 的位置&#xff0c;然后每一位两两操作&#xff0c;做好进位的工作。 // C A B vector<int> add(vector<int>…

Spring Boot手写starter

目录 1.介绍1.1 什么是 Starter 机制&#xff1f;1.2 Starter 机制的工作原理&#xff1f; 2.starter自定义2.1 新建工程2.2 自定义注解2.3 创建增强类2.4 创建自动配置类2.5 配置自动配置2.6 测试 1.介绍 1.1 什么是 Starter 机制&#xff1f; Starter 机制是 Spring Boot 提…

BulingBuling - 作息安排 [Reset Your Routine] - 1

The Blinkist Team: [ Reset Your Routine ] 如果你发现自己很难按部就班&#xff0c;或者陷入工作效率低的困境&#xff0c;那么你可能需要重新调整一下作息时间&#xff01;从睡眠和营养&#xff0c;到待办事项和井井有条--本指南为你提供了各种技巧和策略&#xff0c;让你的…

自然之美无需雕琢

《自然之美&#xff0c;无需雕琢 ”》在这个颜值至上的时代&#xff0c;但在温馨氛围中&#xff0c;单依纯以一种意想不到的方式&#xff0c;为我们诠释了自然之美的真谛。而医生的回答&#xff0c;如同一股清流耳目一新。“我说医生你看我这张脸&#xff0c;有没有哪里要动的。…

【数据结构(邓俊辉)学习笔记】高级搜索树01——伸展树

文章目录 1. 逐层伸展1. 1 宽松平衡1. 2 局部性1. 3 自适应调整1. 4 逐层伸展1. 5 实例1. 6 一步一步往上爬1. 7 最坏情况 2. 双层伸展2.1 双层伸展2.2 子孙异侧2.3 子孙同侧2.4 点睛之笔2.5 折叠效果2.6 分摊性能2.7 最后一步 3 算法实现3.1 功能接口3.2 伸展算法3.3 四种情况…

linux下的网络编程

网络编程 1. 网络基础编程知识1.1网络字节序问题1.2 常用socket编程接口1.2.1 sockaddr1.2.2 ip地址转换函数1.2.4 socket()1.2.3 bind()1.2.4 listen()1.2.5 accept()1.2.6 connect() 1.3 以udp为基础的客户端连接服务器的demo1.4 以udp为基础的的服务器聊天室功能demo1.5 基于…

Spark SQL----内置函数Conversion Functions Conditional Functions

Spark SQL----内置函数Conversion Functions& Conditional Functions Conversion Functions 例子&#xff1a; -- cast SELECT cast(10 as int); --------------- |CAST(10 AS INT)| --------------- | 10| ---------------Conditional Functions 例子&#x…

Apispec,一个用于生成 OpenAPI(Swagger)规范的 Python 库

目录 01什么是 Apispec&#xff1f; 为什么选择 Apispec&#xff1f; 安装与配置 02Apispec 的基本用法 生成简单的 API 文档 1、创建 Apispec 实例 2、定义 API 路由和视图 3、添加路径到 Apispec 集成 Flask 和 Apispec 1、安装…

Spring Boot与Jenkins的集成

Spring Boot与Jenkins的集成 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 一、引言 Jenkins作为一个开源的持续集成&#xff08;CI&#xff09;和持续交付…

计算机行业现状分析与发展前景

一、行业竞争现状 技术创新不断涌现&#xff1a;计算机行业在技术创新方面取得了长足的进步&#xff0c;如云计算、大数据、人工智能、物联网等前沿技术不断涌现&#xff0c;这些技术不仅推动了行业的快速发展&#xff0c;也为传统产业的转型升级提供了有力支撑。 行业竞争日益…

Linux开发:进程间通过Unix Domain Socket传递数据

进程间传递数据的方式有很多种,Linux还提供一种特殊的Socket用于在多进程间传递数据,就是Unix Domain Socket(UDS)。 虽然通过普通的Socket也能做到在多进程间传递数据,不过这样需要通过协议栈层的打包与拆包,未免有些浪费效率,通过UDS,数据仅仅通过一个特殊的sock文件…