代理原理 介绍

代理指的就是代理服务器,英文 叫作 proxy server,它的功能是代理网络用户 去取得网络信 息。形象地说,它是网络信息的中转站(可以直白的理解为中介)。 当我们请求一个网站时, 通常是将请求给 Web服务器, Web 服务器再把响应传回给我们 。 如果设置了代理服务器 , 就是在本机和服务器之间搭建了 一个 桥梁,先向代理服务器发出请求,请求会发送给代理服务器,然后由代理服务器发送给 Web 服务器,接着由代理服务器再把 Web 服务器返回的响应转发给本机。 这样我们同样可以正常访问网页,这个过程中 Web 服务器识别出的 IP就不再是我们本机的 IP了,这样就成功实现了 IP伪装,这就是代理的基本原理
常应用于IP访问限制和频繁爬取得网站

手动配置(不使用scrapy框架)

import urllib.request
import random
import urllib.error
import time# 如果是购买的,通过接口得到数据,然后处理为列表即可
ip_pool = ['218.60.8.98:3129','183.129.207.74:14823','114.113.126.82:80','171.38.24.228:8123'
]while 1:# 从ip列表中随机一个代理ip出来ip = random.choice(ip_pool)url = 'http://www.baidu.com/s?ie=UTF-8&wd=ip'proxy = {'http': ip}handler = urllib.request.ProxyHandler(proxies=proxy)opener = urllib.request.build_opener(handler)headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',}request = urllib.request.Request(url=url, headers=headers)try:response = opener.open(request, timeout=3)print('代理%s使用成功' % ip)with open('ip.html', 'wb') as fp:fp.write(response.read())breakexcept:# 代表你取的代理不可用ip_pool.remove(ip)# 判断列表的长度,如果小于5个,重新获取一批放到列表中print('代理%s使用失败' % ip)time.sleep(2)

阿布云代理(不使用scrapy框架)

import urllib.request
import base64
# Proxy-Authorization: Basic SDAxMjM0NTY3ODkwMTIzNDowMTIzNDU2Nzg5MDEyMzQ1
# 购买隧道的通行证书
username = 'H12728196WX744CD'
# 购买隧道的通行秘钥
password = '9ED6609BC458738C'
# 通行证书和秘钥通过冒号进行拼接
value = username + ':' + password
# 将拼接后的结果经过base64编码
value = base64.b64encode(value.encode('utf-8')).decode('utf8')
# print(value)
# 定制请求头
headers = {'Proxy-Authorization': 'Basic ' + value,'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
}
# 构建请求对象
url = 'http://www.baidu.com/s?ie=UTF-8&wd=ip'
request = urllib.request.Request(url=url, headers=headers)
# 使用代理,需要创建handler和opener
handler = urllib.request.ProxyHandler(proxies={'http': 'http-dyn.abuyun.com:9020'})
opener = urllib.request.build_opener(handler)
# 发送请求,保存内容
response = opener.open(request)with open('abu.html', 'wb') as fp:fp.write(response.read())

Scrapy使用阿布云代理

1.打开middlewares.py文件

2.添加代理类

import base64
 
""" 阿布云代理配置"""
proxy_server = "http://http-dyn.abuyun.com:9020"
proxy_user = "HEWGR9329K68Z11D"
proxy_pass = "ACEBFFCDFE62615F"
proxy_auth = "Basic " + base64.urlsafe_b64encode(bytes((proxy_user + ":" + proxy_pass), "ascii")).decode("utf8")
 
class ABYProxyMiddleware(object):
    """ 阿布云代理中间件 """
    def process_request(self, request, spider):
        request.meta["proxy"] = proxy_server
        request.headers["Proxy-Authorization"] = proxy_auth

3.打开settings.py文件开启中间件:

DOWNLOADER_MIDDLEWARES = {
    'Securities.middlewares.ABYProxyMiddleware': 1,
}
4.阿布云每秒请求次数有限制,可以在settings.py中对scrapy请求速度进行设置

""" 启用限速设置 """
AUTOTHROTTLE_ENABLED = True
AUTOTHROTTLE_START_DELAY = 0.2  # 初始下载延迟
DOWNLOAD_DELAY = 0.2  # 每次请求间隔时间

本文参考的文章 :

https://blog.csdn.net/Rouckie/article/details/84638842

https://www.jianshu.com/p/0fc49d10967f

Scrapy + 阿布云代理 + 手动自动配置相关推荐

  1. Scrapy使用阿布云代理

    1.打开middlewares.py文件 2.添加代理类 import base64   """ 阿布云代理配置""" proxy_serv ...

  2. scrapy——7 scrapy-redis分布式爬虫,用药助手实战,Boss直聘实战,阿布云代理设置...

    scrapy--7 什么是scrapy-redis 怎么安装scrapy-redis scrapy-redis常用配置文件 scrapy-redis键名介绍 实战-利用scrapy-redis分布式爬 ...

  3. [Python3网络爬虫开发实战] 付费讯代理、阿布云代理的使用

    相对免费代理来说,付费代理的稳定性相对更高一点,本节介绍一下爬虫付费代理的相关使用过程. 付费代理分类 在这里将付费代理分为两类: 提供接口获取海量代理,按天或者按量付费,如讯代理 搭建了代理隧道,直 ...

  4. 第二十八节:隧道代理阿布云代理

    阿布云为我们提供了隧道代理IP的服务,通过阿布云HTTP隧道的动态版可以让我们的爬虫很好的使用动态代理IP 由此可知我们可以得到requests接入代码 1 # -*- coding:utf-8 -* ...

  5. Android Studio配置阿里云代理,Gradle 配置国内镜像

    Android Studio配置阿里云代理,Gradle 配置国内镜像 链接:https://www.cnblogs.com/junejs/p/12686834.html

  6. Jsoup爬虫--使用阿布云代理

    Jsoup爬虫--使用阿布云代理 代理类: package com.qianxing.API;import org.apache.http.HttpEntity; import org.apache. ...

  7. 拨号云服务器怎么自动配置网关_教你在阿里云创建增强型云网关

    Hello,大家好,今天我们聊的话题依旧和云有关,本期的主角是阿里云.阿里云创立于2009年,是全球领先的云计算及人工智能科技公司,致力于以在线公共服务的方式,提供安全.可靠的计算和数据处理能力,让计 ...

  8. 拨号云服务器怎么自动配置网关_云服务器配置网站卡慢怎么办

    网站访问卡慢有很多原因,一次完整的 HTTP 请求包括域名解析.建立 TCP 连接.发起请求.云服务器接收到请求进行处理并返回处理结果.浏览器对 HTML 代码进行解析并请求其他资源,以及对页面进行渲 ...

  9. pyppeteer使用阿布云代理隧道问题以及代码 和代理是否成功 python3 selenium设置代理ip的实现 IP 非真人甑别

    python3 selenium模块Chrome设置代理ip的实现 selenium模块Chrome设置代理ip的实现代码: from selenium import webdriver chrome ...

最新文章

  1. 还有多久才能用上2000元以下的5G手机?答案来了
  2. 【目录】 软件测试全栈需要学习什么? 软件测试的各个阶段 ,软件测试学习路径,软件测试方向选择,软件测试的薪资待遇。...
  3. 实用 | 从Apache Kafka到Apache Spark安全读取数据
  4. Flutter开发之ListView组件(21)
  5. python javascript配合,在python部署时组合javascript文件
  6. hdu4302 set或者线段树
  7. wpf combobox选择不显示_微软为Windows 10 on ARM引入WPF支持:提前防御苹果
  8. JQuery Tips
  9. html怎么给code标签添加语言,html code标签怎么用?html code标签的作用解释
  10. python123判断性别程序_听说听胎心能够预测宝宝性别?这是真的吗?
  11. mysql创建备份表脚本_MySQL 备份脚本(单库/分库分表)
  12. 物联网中间件的未来是云计算技术为中心和混合结构
  13. javaScript遍历对象
  14. matlab导出高分辨率图片,Matlab导出高DPI图像——生成高分辨率.eps .tiff .jpg
  15. 人生需要执著——从二本三战到985博士
  16. uni-app常见的生命周期
  17. Auto.js 找图 找色 剪切图片 坐标区域计算方法
  18. mysql聚簇和非聚簇索引
  19. JavaScript日期时间详解
  20. 安装黑苹果提示未能安装_黑苹果安装过程中经常出现的问题及解决方法

热门文章

  1. 国内开源Android系统,国产华为用的安卓系统是开源的,这开源是啥意思?
  2. 南开c语言程序设计作业答案,南开19春学期(1709、1803、1809、1903)《C语言程序设计》在......
  3. server sql top速度变慢解决方案_SQL Server查询优化方法(查询速度慢的原因很多,常见如下几种)...
  4. ad下发统一桌面出现黑屏
  5. 为什么安装python之后要安装PyCharm?
  6. An Introduction to Shiro (formerly JSecurity) – A Beginner’s Tutorial Part 4
  7. php获取手机ime,关于IME
  8. 关于MySQL数据库当中,字段(或栏位)采用中文命名时的掉坑经历
  9. c语言前提,C语言前提条件和后置条件
  10. [算法入门]快速排序非递归方法(Java实现),大家一起来找茬啊~