代理ip

爬虫设置代理IP

╄→гoц情女王★ 提交于 2019-12-02 08:34:26
配置 settings.py 启用自定义 IP 代理中间件   DOWNLOADER_MIDDLEWARES     设置自定义 IP 代理中间件优先级高于系统 IP 代理中间件 DOWNLOADER_MIDDLEWARES = { 'quotes.middlewares.QuotesDownloaderMiddleware': 543, # 'quotes.middlewares.UserAgentMiddlewares': 543, } 收集可用的 IP 代理,构建 IP 代理池   在 settings.py 中定义IP代理数组 IPPools = [ {"ipaddr":"124.205.155.149:9090"}, {"ipaddr":"119.23.79.199:3128"}, {"ipaddr":"120.26.208.102:88"}, {"ipaddr":"111.231.12.253:1080"}, ]     这些IP可以从这个几个网站获取: 快代理 、 代理66 、 有代理 、 西刺代理 、 guobanjia 。如果出现像下面这种提示:"由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败"或者是这种," 由 于目标计算机积极拒绝,无法连接。". 那就是IP的问题,更换就行了。 middlewares.py 中添加

使用HTTP代理

谁说胖子不能爱 提交于 2019-12-01 22:50:32
HTTP代理服务器可以比作客户端与Web服务器网站之间的一个信息中转站,客户端发送的HTTP请求和Web服务器返回的HTTP响应通过代理服务器转发给对方, 爬虫程序在爬取某些网站的时候也需要使用代理,例如 由于网络环境因素,直接爬取的速度太慢了,使用代理提高爬取的速度 某些网站读用户的访问速度进行限制,爬取过快会被封禁IP,使用代理防止被封禁 由于地方法律或者政治的原因,某些网站是无法直接进行访问的,使用代理可以绕过访问的限制 在scrapy中专门提供了HttpProxyMiddleware来给scrapy爬虫设置代理    HttpProxyMiddleware默认就是开启的,它会在系统环境变量中搜索当前系统代理,作为scrapy爬虫使用的代理 源码解析:   __init__方法:     在HttpProxyMiddleware的构造器中,使用python标准库urllib中的getproxies函数在系统环境变量中搜索系统代理的相关配置(变量名格式为[格式]_proxy的变量),调用self._get_proxy方法解析代理配置信息,并将其返回结果保存到self.proxies字典中,如果没有找到任何代理配置的话,就抛出NotConfigured异常,HttpProxyMiddleware就会被放弃使用   _get_proxy方法:     解析代理配置信息

reGeorg(不需要外网ip的代理)

回眸只為那壹抹淺笑 提交于 2019-11-30 23:11:27
reGeorg _____ ______ __|___ |__ ______ _____ _____ ______ | | | ___|| ___| || ___|/ \| | | ___| | \ | ___|| | | || ___|| || \ | | | |__|\__\|______||______| __||______|\_____/|__|\__\|______| |_____| ... every office needs a tool like Georg willem@sensepost.com / @_w_m__ sam@sensepost.com / @trowalts etienne@sensepost.com / @kamp_staaldraad Version 1.0 Dependencies reGeorg requires Python 2.7 and the following modules: urllib3 - HTTP library with thread-safe connection pooling, file post, and more. Usage $ reGeorgSocksProxy.py [-h] [-l] [-p] [-r] -u [-v] Socks server for reGeorg HTTP(s)

多个spider用不同的代理(指定城市的ip)

江枫思渺然 提交于 2019-11-30 20:53:52
class proxyMiddleware(object): def __init__(self): self.ip_pool_cc = [] self.get_ip_url_cc = 'http://xxxxx' self.ip_pool_cq = [] self.get_ip_url_cq = 'http://xxxxx' def process_request(self, request, spider): if "zlwmw_cc" in spider.name: url_test = "http://xxxxxxxxx" pro_addr = self.base_proxy(self.ip_pool_cc,self.get_ip_url_cc,url_test) request.meta['proxy'] = "http://" + pro_addr elif "zlwmw_cq" in spider.name: url_test = "http://xxxxxxxxx" pro_addr = self.base_proxy(self.ip_pool_cq, self.get_ip_url_cq,url_test) request.meta['proxy'] = "http://" + pro_addr def base_proxy(self,ip_pool,get_ip

爬取快代理的免费IP并测试

拥有回忆 提交于 2019-11-30 08:36:30
各大免费IP的网站的反爬手段往往是封掉在一定时间内访问过于频繁的IP,因此在爬取的时候需要设定一定的时间间隔,不过说实话,免费代理很多时候基本都不能用,可能一千个下来只有十几个可以用,而且几分钟之后估计也扑街了。虽然有那种付费的大量代理IP,但是也不见得好,测试过,里面优质的也很少。目前体验比较好的还是私密代理,当然还有其他。贵有贵的道理。 import requests import time import random from fake_useragent import UserAgentfrom requests.exceptions import RequestException from lxml import etree import csv class IPSpider(object): def __init__(self): self.url = 'https://www.kuaidaili.com/free/inha/' self.url_test = 'http://www.baidu.com/' # 直接拿百度来测试IP能不能用 def get_headers(self): """ 随机产生请求头 :return: """ ua = UserAgent() headers = { 'User-Agent': ua.random } return

分析http代理报错问题

帅比萌擦擦* 提交于 2019-11-30 01:46:27
相信很多朋友都使用过代理IP,不管是因为业务需求还是个人需求,在使用代理IP的过程中总会碰到一些让人郁闷无比的问题,比如代理IP连接不上,又如经历了千辛万苦总算连上了,发现慢如蜗牛等等,通往成功的路上总是会遇到挫折,但我们不怕,我们要迎难而上,今天我们来看看使用代理IP速度缓慢的原因有哪些: 1、代理IP服务器所处网络速度不佳。之所以将这个放在第一,是因为百分之九十的朋友遇到使用代理IP访问慢的时候,第一想法就是代理IP服务器出问题了,赶紧找供应商解决; 2、代理IP服务器性能差。这个原因很多朋友不清楚,也不知道,毕竟服务器咋样供应商自己知道,但如果代理IP长期使用速度非常缓慢,就有可能是服务器性能差了,承载不了大量用户访问带来的压力; 3、目标站点速度不稳定。哪怕代理IP速度再快,目标站点慢如蜗牛,你也无可奈何; 4、用户使用代理IP的程序调试有问题。这个是硬伤,哪怕代理IP速度快,目标站点也没有问题,自己电脑不行,访问速度也快不起来; 5、用户网速慢。代理IP网络速度可能会慢,目标站点可能会慢,那么用户的网速自然也有可能会慢,没有什么是不可能的,谁也不敢保证自己的网络不会出故障。 6、确认代理IP是否使用上,复制亿牛云的代码示例demo,访问http://current.ip.16yun.cn:802看看返回的IP,如果返回的是代理IP,就表示代理使用成功。 7

requests模块 高级应用

蹲街弑〆低调 提交于 2019-11-29 23:22:49
目录 requests模块 高级应用 HttpConnectinPool 问题解决 IP代理 简单使用代理 代理池 cookie的处理 页面中验证码识别 使用 multiprocessing.dummy Pool 线程池 单线程+多任务异步协程 requests模块 高级应用 HttpConnectinPool 问题解决 - HttpConnectinPool: - 原因: - 1.短时间内发起了高频的请求导致ip被禁 - 2.http连接池中的连接资源被耗尽 - 解决: - 1.使用代理 - 2.headers中加入Conection:“close” IP代理 - 代理:代理服务器,可以接受请求然后将其转发。 - 匿名度 - 高匿:接收方,啥也不知道 - 匿名:接收方知道你使用了代理,但是不知道你的真实ip - 透明:接收方知道你使用了代理并且知道你的真实ip - 类型: - http - https - 免费代理: - 全网代理IP www.goubanjia.com - 快代理 https://www.kuaidaili.com/ - 西祠代理 https://www.xicidaili.com/nn/ - 代理精灵 http://http.zhiliandaili.cn/ 简单使用代理 - 代理服务器 - 进行请求转发 - 代理ip:port作用到get

scrapy中使用代理

二次信任 提交于 2019-11-29 22:51:07
tip: 大致思路:从网络(URL: http://ip.jiangxianli.com/api/proxy_ips )获取代理ip以及端口,存到列表;随机一个数从列表中取一个ip,设置超市时间以及次数;捕获异常,从列表中删除无用的ip代理并设置新的ip代理 settings.py中还要开启下载中间件 DOWNLOADER_MIDDLEWARES = { 'tianmao.middlewares.TestDownloaderMiddleware': 543, } code: from scrapy import signals import requests import json, random class TestDownloaderMiddleware(object): # Not all methods need to be defined. If a method is not defined, # scrapy acts as if the downloader middleware does not modify the # passed objects. def __init__(self): # 获取请求到的ip内容 res = requests.get('http://ip.jiangxianli.com/api/proxy_ips') # 存入列表 self

python多线程建立代理ip池

假装没事ソ 提交于 2019-11-29 16:43:31
之前有写过用单线程建立代理ip池,但是大家很快就会发现,用单线程来一个个测试代理ip实在是太慢了,跑一次要很久才能结束,完全无法忍受。所以这篇文章就是换用多线程来建立ip池,会比用单线程快很多。之所以用多线程而不是多进程,是因为测试时间主要是花费在等待网络传递数据上,处理本地计算的时间很短,用多线程能更好地发挥单核性能,而且多线程开销比多进程开销小得多。当然,单核性能会有极限,如果想再提高性能就需要多进程和多线程混用了。当然这里说的是用CPython作为解释器时候的情况,因为绝大多数人用的都是CPython,所以以下说的都是这种情况。 受限于个人学识,对多进程和多线程的理解也不是很深刻,如果以后有机会会写写关于并发编程的文章。CPython因为GIL锁的原因,多线程无法发挥多核性能,但是可以用多进程来发挥多核性能。注意GIL锁不是python语言特性,只是CPython解释器的原因。任何python线程在执行前,都必须获得GIL锁,然后每执行100条字节码,解释器就自动释放GIL锁,让别的线程执行。所以python线程只能交替执行,即使有多个线程跑在多核CPU上,也只能利用一个核。 其实程序主体在之前的文章已经写好了,我们需要的只是稍微做点改进,以适合多线程编程。我的思路是,设置一个线程专门用来爬取待测试ip,其他线程获取待测试ip进行测试。这也是分布式编程的思想。

爬虫(二)建立代理ip池

血红的双手。 提交于 2019-11-29 11:58:24
之前我们说网站反爬虫的一个常用方法是检测ip,限制访问频率。所以我们要通过设置代理ip的办法绕过这个限制。有不少提供免费代理ip的网站,像 https://www.xicidaili.com/nt/ ,我们可以从网站上拿到很多代理ip。但是这些ip并不是每个都能用的,或者说,没几个能用的。 我们可以用beautifulsoup分析网页,然后处理,提取代理ip列表,也可以用正则表达式进行匹配。用正则表达式会快一些。ip_url就是 https://www.xicidaili.com/nt/ ,random_hearder就是一个随机获得请求头的函数。 def download_page(url): headers = random_header() data = requests.get(url, headers=headers) return data def get_proxies(page_num, ip_url): available_ip = [] for page in range(1,page_num): print("抓取第%d页代理IP" %page) url = ip_url + str(page) r = download_page(url) r.encoding = 'utf-8' pattern = re.compile('<td class=