代理IP的使用与可用性检测

1. 代理IP的使用 

在对大多数网站进行爬虫爬取我们想要的数据时,服务器一般都会设置爬虫检测机制。对于服务器而言,它要做的就是为正常用户提供服务,对于爬虫这种访问速度快且占用大量服务器资源的的非正常行为会设置反爬虫机制,一旦超过一定的访问频率就会被服务器禁用一段时间的IP,此时使用代理IP就可以很好的避免这个问题。

代理IP的选取

网上有付费和免费的代理IP,免费代理的话就是自己写爬虫把免费的IP爬取下来,建立自己的IP代理池。对于付费的可以用API直接请求获得指定数量的IP,再构建自己的IP代理池。

对于免费的某代理的IP我测试了一下,1000个IP里只有2个有效的,所以如果要使用代理IP的话,建议还是付费比较方便,可用性和数量都比较不错。

对于付费IP的购买,由于是自己用,找到了这个便宜且提供小规模IP套餐的网站(非广告):稻壳代理 | 高性价比代理IP服务 | 免费代理IP自动更新

 我选取的是隧道代理套餐,隧道代理与传统代理的不同在于传统代理需要自己动手请求API获得ip,隧道代理是直接向目标网址发送请求即可,ip的选取由服务器自动完成,更加简单和自动化,使用前需要设置ip白名单,只有处于这个ip下才能调用代理ip的API,去百度搜索我的ip,找到自己的外网ip设置上即可,请求https请求时还需要设置忽略SSL验证。

代理IP的使用形式(requests库)

proxy = {'http': '139.196.78.175:7890', 'https': '139.196.78.175:7890'}

response = requests.get(url, proxies=proxies, headers=headers,timeout=2)

2. 代理IP的可用性检测

def verifyIP(proxy):url = "https://www.baidu.com/"headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0'}try:response = requests.get(url=url, headers=headers, proxies=proxy, timeout=1)print(f'{proxy}有效代理')print(response.text)except Exception as e:print(f'{proxy}无效代理:', e)verifyIP({'http': '139.196.78.175:7899', 'https': '139.196.78.175:7899'})

这段代码定义了一个函数,用于检测输入的代理IP是否可用。

另外,这里有一个检测代理IP有效的网站,支持批量检测:在线批量验证Http代理IP_多线程在线检测Http代理服务器_导出有效代理IP - 站大爷 - 企业级高品质Http代理IP_Socks5代理服务器_免费代理IP (zdaye.com)

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

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

相关文章

2023 re:Invent 用 PartyRock 10 分钟构建你的 AI 应用

前言 一年一度的亚马逊云科技的 re:Invent 可谓是全球云计算、科技圈的狂欢,每次都能带来一些最前沿的方向标,这次也不例外。在看完一些 keynote 和介绍之后,我也去亲自体验了一些最近发布的内容。其中让我感受最深刻的无疑是 PartyRock 了。…

【数据结构】每天五分钟,快速入门数据结构(二)——链表

目录 一 构建一个单向链表 二 特点 三 时间复杂度 四 相关算法 1.判断链表是否成环及成环位置 2.链表反转 五 Java中的LinkedList 类 1.使用 2.LinkedList 方法 一 构建一个单向链表 // 设计链表结构class ListNode {int val;ListNode next;ListNode(){}ListNode(int…

LeetCode 2583.二叉树中的第 K 大层和:层序遍历 + 排序

【LetMeFly】2583.二叉树中的第 K 大层和:层序遍历 排序 力扣题目链接:https://leetcode.cn/problems/kth-largest-sum-in-a-binary-tree/ 给你一棵二叉树的根节点 root 和一个正整数 k 。 树中的 层和 是指 同一层 上节点值的总和。 返回树中第 k …

Oracle迁移到mysql-表结构的坑

1.mysql中id自增字段必须是整数类型 id BIGINT AUTO_INCREMENT not null, 2.VARCHAR2改为VARCHAR 3.NUMBER(16)改为decimal(16,0) 4.date改为datetime 5.mysql范围分区必须int格式,不能list类型 ERROR 1697 (HY000): VALUES value for partition …

就业的二三事

先说一下当前本人的情况:双非本一,研二在读,一篇图像处理方面的sci一区(二作),日常工作语言为python,有过一段开源实习。要开始准备实习了,发个帖子记录一下自己所收集的信息。 前几…

【Java】RestClient的使用

RestClient的使用 先导入Maven坐标&#xff0c;要和elasticsearch和kibana的版本保持一致 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.12.1<…

JAVA工程师面试专题-Mysql篇

一、基础 1、mysql可以使用多少列创建索引&#xff1f; 16 2、mysql常用的存储引擎有哪些 存储引擎Storage engine&#xff1a;MySQL中的数据、索引以及其他对象是如何存储的&#xff0c;是一套文件系统的实现。常用的存储引擎有以下&#xff1a; Innodb引擎&#xff1a;In…

【PostgreSQL内核学习(二十七) —— (编码转换)】

编码转换 概述处理客户端与服务器之间的字符串编码转换pg_do_encoding_conversion 函数FindDefaultConversionProc 函数FindDefaultConversion 函数 处理服务器与客户端之间的字符串编码转换两者的联系和区别 声明&#xff1a;本文的部分内容参考了他人的文章。在编写过程中&am…

关于Linux中top的使用

关于Linux中top的使用 1 简介1 系统统计信息2 进程信息 2 常用参数 在项目开发中, 经常会有服务器负载突然飙升, 服务不可用等情况. 需要去关注项目的运行情况. 而top命令是Linux里面常用的性能分析工具, 能够实时显示系统中各个进程的资源占用状况. 1 简介 登录服务器, 输入命…

单片机04__基本定时器__毫秒微秒延时

基本定时器__毫秒微秒延时 基本定时器介绍&#xff08;STM32F40x&#xff09; STM32F40X芯片一共包含14个定时器&#xff0c;这14个定时器分为3大类&#xff1a; 通用定时器 10个 TIM9-TIM1和TIM2-TIM5 具有基本定时器功能&#xff0c; 还具有输入捕获&#xff0c;输出比较功…

char 、unsigned char、const char区别

1. const char的意思是该字符是 常量类型的。 比如const char ch a; 是告诉编译器&#xff0c;这个变量不会改变。 当你给这个变量重新赋值的时候&#xff0c;会发出warning&#xff0c;提示用户。 const char *和 char const * 以及char * const Bjarne在他的The C Programm…

Linux TCP 参数设置

文章目录 Linux TCP 参数设置参考 Linux TCP 参数设置 查询tcp相关内核参数 sysctl -a|grep ipv4|grep -i --color tcp[rootlocalhost ~]# sysctl -a|grep ipv4|grep -i --color tcp sysctl: reading key "net.ipv6.conf.all.stable_secret" sysctl: reading key &…

Django——ORM增删改查

基本对象 model.objects 创建数据 可以通过django编写的命令行方式快捷创建数据 python manage.py shell 如果对模型层有任何修改都需要重启shell&#xff0c;否则操作容易出错 在shell中我们需要先引入我们的模型&#xff0c;如from bookstore.models import Book 然后通过…

【接口加密】Java中的接口加密实践

目录 2.1 Java加密相关的基础知识 2.1.1 Java加密框架概述 2.1.2 Java加密常用算法介绍 2.2 Java中的接口加密实现 2.2.1 使用Java加密标准&#xff08;JCE&#xff09;实现接口加密 2.2.2 通过Bouncy Castle库实现接口加密 2.2.3 第三方加密工具的集成与应用 2.3 Java…

Uniapp-小程序简单的时间选择组件-年月日时分

文章目录 前言一、组件效果二、组件代码使用 总结 前言 uniapp小程序开发系列。本文实现一个简单时间选择控件。uniapp用个心仪时间控件真的麻烦。官方给得要么年月日&#xff0c;要么时分。产品只要年月日时分。这该怎么玩。旧项目没有引入ui框架&#xff0c;我也不想去引入&…

如何连接ACL认证的Redis

点击上方蓝字关注我 应用程序连接开启了ACL认证的Redis时与原先的方式有差别&#xff0c;本文介绍几种连接开启ACL认证的Redis的Redis的方法。 对于RedisACL认证相关内容&#xff0c;可以参考历史文章&#xff1a; Redis权限管理体系(一&#xff09;&#xff1a;客户端名及用户…

python 中 ftplib库的使用说明

在Python3中&#xff0c;ftplib库是用于处理FTP协议的内置模块。以下是一些使用ftplib库的基本操作示例和说明&#xff1a; 连接与登录FTP服务器 from ftplib import FTP# 创建一个FTP对象 ftp FTP()# 连接到FTP服务器 ftp.connect(ftp.example.com, port21) # 默认端口为2…

【二十七】【C++】二叉树练习

606. 根据二叉树创建字符串 给你二叉树的根节点 root &#xff0c;请你采用前序遍历的方式&#xff0c;将二叉树转化为一个由括号和整数组成的字符串&#xff0c;返回构造出的字符串。 空节点使用一对空括号对 "()" 表示&#xff0c;转化后需要省略所有不影响字符串与…

【无刷电机学习】各种电机优势比较

目录 0 参考出处 1 有刷与无刷比较 2 交流与直流比较 3 内转子与外转子比较 4 Delta型与Y型定子绕向比较 5 低压BLDC的一些优点 0 参考出处 【仅作自学记录&#xff0c;不出于任何商业目的。如有侵权&#xff0c;请联系删除&#xff0c;谢谢&#xff01;】 维基百科…

C++力扣题目139--单词拆分 198--打家劫舍 213--打家劫舍II 337打家劫舍III

139.单词拆分 力扣题目链接(opens new window) 给定一个非空字符串 s 和一个包含非空单词的列表 wordDict&#xff0c;判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明&#xff1a; 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 …