【爬虫用户代理和ip自动生成】

爬虫用户代理和ip自动生成


辛辛苦苦搬砖真辛苦啊

package com.glodon.gbes.utils;import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Random;
import java.util.Set;/*** 爬虫辅助工具类** @author luochao* @since 20240126*/
public class CrawlerHelper {// 浏览器内核标识private static final List<String> consumers = Arrays.asList("Mozilla/5.0 (", "Mozilla/5.01 (", "Mozilla/4.0 (");// 操作系统类型private static final List<String> systemTypes = Arrays.asList("Windows NT 10.0; WOW64", "Macintosh; Intel Mac OS X 10_12_6", "Macintosh; Intel Mac OS X 10.12; rv:65.0","Windows NT 10.0; Win64; x64", "Windows NT 10.0; WOW64; Trident/7.0; rv:11.0", "Windows NT 6.1; WOW64","Windows NT 6.3; Win64; x64", "Windows NT 10.0; WOW64", "Macintosh mips64", "Macintosh mips64","Macintosh; Intel Mac OS X 11_2_3", "Macintosh; Intel Mac OS X 11_2_1", "Macintosh; Intel Mac OS X 11_2_1","Macintosh; Intel Mac OS X 11_2_1", "Macintosh; Intel Mac OS X 10_15_4", "Macintosh; Intel Mac OS X 10_14_6","Macintosh; Intel Mac OS X 10_14_6", "Macintosh; Intel Mac OS X 10_14_6", "Macintosh; Intel Mac OS X 10_14_6","Macintosh; Intel Mac OS X 10_14_4", "Macintosh; Intel Mac OS X 10_14_4", "Macintosh; Intel Mac OS X 10_14_3","Macintosh; Intel Mac OS X 10_14_2", "Macintosh; Intel Mac OS X 10_14_0", "Macintosh; Intel Mac OS X 10_13_6","Macintosh; Intel Mac OS X 10_13_6", "Macintosh; Intel Mac OS X 10_13_6", "Macintosh; Intel Mac OS X 10_13_6","Macintosh; Intel Mac OS X 10_12_6", "Macintosh; Intel Mac OS X 10_11_6", "Macintosh; Intel Mac OS X 10_11_6");private static final String kernelPrefix = ") AppleWebKit";// 浏览器内核private static final List<String> browserKernels = Arrays.asList("/537.36", "/607.3.10", "/13605.3.8", "/605.1.15", "/546.36", "/543.36", "/542.36", "/540.36", "/538.36","/536.36", "/535.36", "/533.36", "/530.36", "/528.36", "/525.36", "/511.36", "/509.36", "/508.36","/506.36", "/504.36", "/503.36", "/500.36", "/499.36", "/498.36", "/496.36", "/494.36", "/491.36","/490.36", "/489.36", "/483.36", "/482.36", "/481.36", "/476.36", "/473.36", "/472.36", "/471.36","/469.36", "/466.36");private static final String kernelSuffix= " (KHTML, like Gecko) ";// 浏览器标识private static final List<String> browserVersion = Arrays.asList("Chrome/90.0.4430.72", "Chrome/72.0.3626.121", "Chrome/87.0.27523.82", "Chrome/88.0.30832.82", "Chrome/89.0.4389.128","Chrome/88.0.48357.82", "Chrome/86.0.16571.82", "Chrome/80.0.3987.87", "Chrome/73.0.3683.75", "Chrome/108.0.5359.95","Chrome/89.0.4350.7", "Chrome/89.0.4389.90", "Chrome/67.0.1762.3", "Chrome/91.0.4455.2", "Chrome/87.0.4280.88","Chrome/87.0.34697.82", "Chrome/87.0.40937.82", "Chrome/89.0.20219.82", "Chrome/60.0.3112.90", "Chrome/86.0.33219.82","Chrome/87.0.7030.82", "Chrome/64.0.3282.140", "Chrome/88.0.40585.82", "Chrome/89.0.5219.82", "Chrome/80.0.3987.122","Chrome/87.0.48110.82", "Chrome/89.0.4389.82", "Chrome/86.0.49343.82", "Chrome/48.0.2564.116", "Chrome/86.0.27485.82","Chrome/86.0.11902.82", "Chrome/89.0.4385.82", "Chrome/89.0.43907.82", "Chrome/87.0.32496.82", "Chrome/89.0.48906.82","Chrome/91.0.4466.0", "Chrome/88.0.4324.192", "Chrome/89.0.45365.82", "Chrome/75.0.3770.80", "Chrome/87.0.17682.82","Chrome/80.0.3987.132", "Chrome/86.0.5210.82", "Chrome/89.0.42050.82", "Chrome/76.0.3809.87", "Chrome/67.0.200.124","Chrome/89.0.33519.82", "Chrome/78.0.3904.108", "Chrome/76.0.3809.100", "Chrome/88.0.46354.82", "Chrome/87.0.44790.82","Chrome/88.0.4324.182", "Chrome/87.0.4280.67", "Chrome/82.0.4077.0", "Chrome/88.0.48271.82", "Chrome/81.0.4044.129","Chrome/87.0.48788.82", "Chrome/86.0.36322.82", "Chrome/90.0.4430.11", "Chrome/87.0.7809.82", "Chrome/86.0.4240.198","Chrome/88.0.35623.82", "Chrome/87.0.42434.82", "Chrome/89.0.4389.114", "Chrome/80.0.3987.100", "Chrome/89.0.34528.82","Chrome/69.0.3497.100", "Chrome/53.0.2785.104", "Chrome/84.0.4147.105", "Chrome/87.0.37035.82", "Chrome/77.0.3865.90","Chrome/83.0.4103.56 ", "Chrome/78.0.3872.0", "Chrome/81.0.4023.0", "Chrome/79.0.3945.136", "Chrome/86.0.10846.82","Chrome/89.0.9922.82", "Chrome/80.0.3987.149", "Chrome/88.0.4324.50", "Chrome/80.0.3987.106", "Chrome/86.0.26591.82","Chrome/89.0.14272.82", "Chrome/88.0.9787.82", "Chrome/87.0.28829.82", "Chrome/84.0.4147.89", "Chrome/41.0.2227.0");//private static final List<String> browserTypes = Arrays.asList(" Edg/89.0.774.75", " Maxthon/5.1.60", " Explorer/10.15.0.21066", " Edg/90.0.818.39", " Edg/89.0.774.77"," Edg/88.0.705.29", " Edg/88.0.705.74", " Edg/87.0.664.66", " OPR/73.0.3856.260", " Edg/83.0.478.33"," Edg/78.0.244.0", " Edge/13.18362");// ip池private static final int[][] range = {{ 607649792, 608174079 },// 36.56.0.0-36.63.255.255{ 1038614528, 1039007743 },// 61.232.0.0-61.237.255.255{ 1783627776, 1784676351 },// 106.80.0.0-106.95.255.255{ 2035023872, 2035154943 },// 121.76.0.0-121.77.255.255{ 2078801920, 2079064063 },// 123.232.0.0-123.235.255.255{ -1950089216, -1948778497 },// 139.196.0.0-139.215.255.255{ -1425539072, -1425014785 },// 171.8.0.0-171.15.255.255{ -1236271104, -1235419137 },// 182.80.0.0-182.92.255.255{ -770113536, -768606209 },// 210.25.0.0-210.47.255.255{ -569376768, -564133889 }, // 222.16.0.0-222.95.255.255};/*** 获取随机用户代理* @return*/public static String getRandomAgent() {StringBuffer userAgent = new StringBuffer();Random random = new Random();userAgent.append(consumers.get(random.nextInt(consumers.size())));userAgent.append(systemTypes.get(random.nextInt(systemTypes.size())));userAgent.append(kernelPrefix);String kernelVersion = browserKernels.get(random.nextInt(browserKernels.size()));userAgent.append(kernelVersion);userAgent.append(kernelSuffix);userAgent.append(browserVersion.get(random.nextInt(browserVersion.size())));userAgent.append(" Safari"+ kernelVersion);int isAdditional = random.nextInt(10);if (isAdditional> 7) {userAgent.append(browserTypes.get(random.nextInt(browserTypes.size())));}return userAgent.toString();}/*** 随机生成国内IP地址* @return*/public static String getRandomIp() {// ip范围Random random = new Random();int index = random.nextInt(10);int intIp = range[index][0] + new Random().nextInt(range[index][1] - range[index][0]);// 格式转换int[] b = new int[4];b[0] = (intIp >> 24) & 0xff;b[1] = (intIp >> 16) & 0xff;b[2] = (intIp >> 8) & 0xff;b[3] = intIp & 0xff;return b[0] + "." + b[1] + "." + b[2] + "." + b[3];}public static void main(String[] args) {Set<String> resSet = new HashSet<>();for (int i = 0; i < 10000; i++) {String randomIp = getRandomIp();resSet.add(randomIp);System.out.println(randomIp);}Set<String> agent = new HashSet<>();for (int i = 0; i < 10000; i++) {String userAgent = getRandomAgent();agent.add(userAgent);System.out.println(userAgent);}System.out.println("================================");}
}

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

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

相关文章

C# .Net6搭建灵活的RestApi服务器

1、准备 C# .Net6后支持顶级语句&#xff0c;更简单的RestApi服务支持&#xff0c;可以快速搭建一个极为简洁的Web系统。推荐使用Visual Studio 2022&#xff0c;安装"ASP.NET 和Web开发"组件。 2、创建工程 关键步骤如下&#xff1a; 包添加了“Newtonsoft.Json”&…

Mybatis之SqlSessionFactory详解

大家好&#xff0c;我是升仔 引言 在Mybatis中&#xff0c;SqlSessionFactory 是一个极其核心的组件&#xff0c;它负责创建 SqlSession&#xff0c;后者是进行数据库操作的主要接口。本文将深入探讨 SqlSessionFactory 的原理和应用。 SqlSessionFactory 概述 SqlSessionF…

【Git】项目管理笔记

文章目录 本地电脑初始化docker报错.gitignoregit loggit resetgit statusgit ls-filesgit rm -r -f --cached拉取仓库文件更新本地的项目报错处理! [rejected] master -> master (fetch first)gitgitee.com: Permission denied (publickey).error: remote origin already e…

BACnet转IEC104网关BE104

随着电力系统信息化建设和数字化转型的进程不断加速&#xff0c;对电力能源的智能化需求也日趋增强。健全稳定的智慧电力系统能够为工业生产、基础设施建设以及国防建设提供稳定的能源支持。在此背景下&#xff0c;高性能的工业电力数据传输解决方案——协议转换网关应运而生&a…

研发日记,Matlab/Simulink避坑指南(六)——字节分割Bug

文章目录 前言 背景介绍 问题描述 分析排查 解决方案 总结归纳 前言 见《研发日记&#xff0c;Matlab/Simulink避坑指南&#xff08;一&#xff09;——Data Store Memory模块执行时序Bug》 见《研发日记&#xff0c;Matlab/Simulink避坑指南(二)——非对称数据溢出Bug》…

Arduino开发实例-DRV8833电机驱动器控制直流电机

DRV8833电机驱动器控制直流电机 文章目录 DRV8833电机驱动器控制直流电机1、DRV8833电机驱动器介绍2、硬件接线图3、代码实现DRV8833 使用 MOSFET,而不是 BJT。 MOSFET 的压降几乎可以忽略不计,这意味着几乎所有来自电源的电压都会传递到电机。 这就是为什么 DRV8833 不仅比基…

系统设计黄金法则:简单之美 -- 读后感

1. 在大型软件中&#xff0c; 都会有一个 简洁为美&#xff0c; 大道至简的概念&#xff1b; 在软件设计中的KISS原则&#xff0c; 在Unix中的“一切皆文本” 的抽象概念&#xff0c; 正是这些简洁性&#xff0c; 让这些系统能够取得如此的成功&#xff0c; 切易于适应&#xf…

寒假思维训练day15 牛客练习赛121

牛客练习赛ABCD题解&#xff0c;更新一个题解作为今天的任务收尾。 寒假思维训练day15 摘要&#xff1a; Part1&#xff1a;B题&#xff0c;B-You Brought Me A Gentle Breeze on the Field_牛客练习赛121 (nowcoder.com) Part2: C题&#xff0c;C-氧气少年的水滴 2_牛客练…

一文看懂nginx

nginx与F5的区别&#xff1f; nginx的主要功能是&#xff1f; nginx的优缺点&#xff1f;nginx如何实现负载均衡&#xff1f; Nginx和F5是两种不同的网络服务器和负载均衡器&#xff0c;它们有一些重要的区别。 1. 区别&#xff1a; - Nginx是一个开源的高性能的Web服务器…

职言圈 | 小伙年薪95w,女朋友父母却爱搭不理,如今上岸国家电网,人不到,叔叔阿姨吃饭都不动筷子...

在职场中&#xff0c;每个人都经历着不同的起伏和挑战。有时候&#xff0c;我们会面临着职业生涯上的起伏&#xff0c;但正是这些经历让我们成长&#xff0c;让我们更加坚韧。 就像这位网友一样&#xff0c;他在过去的一年里经历了美团L8的职位和年薪95W&#xff0c;却面临着女…

Sentinel解密:SlotChain中的SLot大揭秘

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 Sentinel解密&#xff1a;SlotChain中的SLot大揭秘 前言SlotChain简介&#xff1a;Sentinel的第一道防线入场仪式&#xff1a;SlotChain中的初始化SlotSlotChain的执行流程&#xff1a;从规则解析到流…

解析应对策略:共建安全、高效的公链与应用生态的关键要素

每天五分钟讲解一个互联网知识&#xff0c;大家好我是啊浩说模式Zeropan_HH 在区块链的生态系统中&#xff0c;公链与应用链是两个紧密相连但又各具特色的领域。公链作为基础设施&#xff0c;为整个区块链世界提供了基础支持&#xff0c;而应用链则是基于公链构建的各类应用&am…

数据可视化练习

文章目录 试题示例 试题示例 绘制下图所示的表格 根据下表的数据&#xff0c;将班级名称一列作为x轴的刻度标签&#xff0c;将男生和女生两列的数据作为刻度标签对应的数值&#xff0c;使用bar()函数绘制下图所示的柱形图。 方式一 import numpy as np import matplotlib.p…

地理空间分析7——地理网络分析与Python

目录 写在开头1. 网络分析基础1.1 地理空间中的网络结构1.1.1 网络的概念1.1.2 网络的组成1.1.3 地理网络的类型1.2 Python中创建和分析地理网络的基础知识2. 最短路径分析2.1 常见算法2.2 具体案例2.2.1 Dijkstra算法2.2.2 A*算法2.2.3 Bellman-Ford算法2.2.4 Floyd-Warshall算…

【华为OD机试真题2023CD卷 JAVAJS】推荐多样性

华为OD2023(C&D卷)机试题库全覆盖,刷题指南点这里 推荐多样性 知识点字符串滑窗 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 推荐多样性需要从多个列表中选择元素,一次性要返回N屏数据(窗口数量),每屏展示K个元素(窗口大小),选择策略: 1. 各个列表…

Kotlin快速入门系列3

Kotlin条件、循环控制 IF条件控制 与Java类似&#xff0c;一个if语句可包含布尔表达式和一条或多条语句。 fun compare(a:Int,b:Int) : Int{//常规传统用法var max aif (b>a) max breturn max//使用elsevar mMax : Intif(a>b){mMax a}else{mMax b}return mMax//使…

Unity中URP下额外灯的距离衰减

文章目录 前言一、额外灯的距离衰减二、DistanceAttenuation函数的传入参数1、distanceSqr2、distanceAndSpotAttenuation3、_AdditionalLightsAttenuation4、GetPunctualLightDistanceAttenuation函数三、DistanceAttenuation函数的程序体 前言 在上一篇文章中&#xff0c;我…

一个新的springboot-vue项目如何启动起来

一个新的springboot-vue项目如何启动起来 1.导入mysql 打开yml文件修改数据库密码 名称 用户名 2.打开pom.xml配置maven依赖 尽量换成自己使用过的版本号&#xff0c;或者打开中央仓库搜索相关内容版本号&#xff1a;https://central.sonatype.com/ 注解为黄色 说明工程…

《合成孔径雷达成像算法与实现》Figure5.17

clc clear close all距离向参数 R_eta_c 20e3; % 景中心斜距 Tr 25e-6; % 发射脉冲时宽 Kr 0.25e12; % 距离向调频率 Fr 7.5e6; % 距离向采样率 Nrg 256; % 距离线采样点数 Bw abs(Kr*Tr); …

@JsonIgnore的使用及相关问题的解决

目录 1 前言 2 对比及其使用方法 3 遇到的相关问题及解决方法 1 前言 在我们编写的后端项目中&#xff0c;有时候可能需要将某个实体类以JSON格式传送给前端&#xff0c;但是其中可能有部分内容我们并不想传送&#xff0c;这时候我们选择将这部分内容变成Null&#xff0c;这…