爬虫小插曲:关于代理参数-proxies那些事

news/2024/7/19 10:25:22 标签: python, 爬虫

代理参数-proxies

定义及分类

python">	【1】定义 : 代替你原来的IP地址去对接网络的IP地址
	
	【2】作用 : 隐藏自身真实IP,避免被封

普通代理

python">	【1】获取代理IP网站
	   快代理、全网代理、代理精灵、... ...2】参数类型
	   proxies = { '协议':'协议://IP:端口号' }
	   proxies = {
	    	'http':'http://IP:端口号',
	    	'https':'https://IP:端口号',
	   }

普通代理 - 示例
使用快代理中的免费IP地址测试是否可用:

python">	# 使用免费普通代理IP访问测试网站: http://httpbin.org/get
	import requests
	
	url = 'http://httpbin.org/get'
	headers = {'User-Agent':'Mozilla/5.0'}
	# 定义代理,在代理IP网站中查找免费代理IP
	proxies = {
	   'http':'http://182.116.239.37:9999',
	   'https':'https://182.116.239.37:9999'
	}
	html = requests.get(url,proxies=proxies,headers=headers,timeout=5).text
	print(html)

在这里插入图片描述
如果我们运行这个代码的话,肯定是会报错的,因为并不是所有的IP地址都是有效的,所以会报错

代理IP池建立
我们使用的是快代理这个网站的IP地址,我们去花钱购买IP地址,然后在去运行测试代码,但是,我就不在这买了,如果有需要的自己去网上看一下快代理IP地址购买及使用,我这里就是测试你购买的IP地址是否可用

python">"""
建立开放代理的代理ip池
"""
import requests

class ProxyPool:
    def __init__(self):
    	# api_url地址,注意,这个是购买快代理IP地址之后的地址,这个填自己的
        self.api_url = 'http://dev.kdlapi.com/api/getproxy/?orderid=999955248138592&num=20&protocol=2&method=2&an_ha=1&sep=1'
        # 测试IP地址可否用的网站
        self.test_url = 'http://httpbin.org/get'
        # 请求头
        self.headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36'}

    def get_proxy(self):
    	# 响应体
        html = requests.get(url=self.api_url, headers=self.headers).text
        # proxy_list: ['1.1.1.1:8888','2.2.2.2:9999,...]
        proxy_list = html.split('\r\n')
        for proxy in proxy_list:
            # 测试proxy是否可用
            self.test_proxy(proxy)

    def test_proxy(self, proxy):
        """测试1个代理ip是否可用"""
        proxies = {
            'http' : 'http://{}'.format(proxy),
            'https': 'https://{}'.format(proxy),
        }
        # 我们用try方法,测试IP地址,如果测试出不可用的话,他不会报错,不会导致下一个能用的也测试不了
        try:
            resp = requests.get(url=self.test_url, proxies=proxies, headers=self.headers, timeout=3)
            if resp.status_code == 200:
            	# \033 这个就是给字体价格颜色
                print(proxy,'\033[31m可用\033[0m')
            else:
                print(proxy,'不可用')
        except Exception as e:
            print(proxy, '不可用')

    def run(self):
        self.get_proxy()

if __name__ == '__main__':
    spider = ProxyPool()
    spider.run()

私密代理+独享代理

python">【1】语法结构
   proxies = { '协议':'协议://用户名:密码@IP:端口号' }2】示例
   proxies = {
	  'http':'http://用户名:密码@IP:端口号',
      'https':'https://用户名:密码@IP:端口号',
   }

私密代理+独享代理 - 示例代码

python">	import requests
	url = 'http://httpbin.org/get'
	proxies = {
	    'http': 'http://309435365:szayclhp@106.75.71.140:16816',
	    'https':'https://309435365:szayclhp@106.75.71.140:16816',
	}
	headers = {
	    'User-Agent' : 'Mozilla/5.0',
	}
	
	html = requests.get(url,proxies=proxies,headers=headers,timeout=5).text
	print(html)

http://www.niftyadmin.cn/n/835462.html

相关文章

4.36-域名重定向 4.37-用户认证 4.38-Nginx访问日志 4.39-日志不记录静态文件 4.40-日志切割...

2019独角兽企业重金招聘Python工程师标准>>> 4.36-域名重定向 配置第二个域名: vi /etc/nginx/conf.d/blog.aminglinux.cc.conf 在 server_name 那一行的域名后面再加一个域名,空格作为分隔。 nginx -t nginx -s reload域名重定向&#xff1a…

理解原型与原型链

原型与原型链是学习JavaScript这门语言不能不理解的两个重要概念,为什么?因为JavaScript是一门基于原型的语言。怎么理解“JavaScript是一门基于原型的语言”?在软件设计模式中,有一种模式叫做原型模式,JavaScript正是…

爬虫第七式:有道翻译破解案例(post)

温馨提示: 爬虫玩得好,监狱进得早。数据玩得溜,牢饭吃个够。 《刑法》第 285 条,非法获取计算机信息系统数据罪。 违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机…

人脸识别

计划 实现了一个基于 PCA 的人脸识别 方法 ,我 称之为 “ 特征点方法 ”, 所有的功能简单而且实用 。下面,我使用一个简单的MATLAB脚本 说明 它的用法 。一般情况 , 你应该 按照以下这个顺序执行这个方法 :1. 选择实际…

系统SDK介绍-02

系统SDK介绍 打开相册选择图片打开相册选择视频打开相机拍摄图片打开相机拍摄视频配置权限: 在info.plist文件中添加需要的权限 相机权限:Privacy - Camera Usage Description 允许此权限才能使用相机功,这样才能录制视频,并且想要…

教你玩转 hooks

背景 Hooks 是React 16.8中的新增功能。它们允许您在不编写class的情况下使用状态和其他React功能,关于原理性东西其他大佬已经说很多了,我今天主要讲实践具体用法。 复制代码 基本api 官方链接传送门 常用api: useStateuseEffectuseReduceruseRefuseContextuseSt…

爬虫第八式:破解百度翻译案例(特别详细) - JS逆向

温馨提示: 爬虫玩得好,监狱进得早。数据玩得溜,牢饭吃个够。 《刑法》第 285 条,非法获取计算机信息系统数据罪。 违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机…

Maven+druid+MyBatis+Spring+Oracle+Dubbo开发环境搭建

MavendruidMyBatisSpringOracleDubbo开发环境搭建 1.开发工具使用: MyEclipse或Eclipse,数据库使用Oracle。需要用到的软件有Zookeeper(注册中心),Tomcat(Web容器)和Maven(包管理)。 2.初始环境配置: 解压zookeeper-3.4.6到自己的…