大家好,今天来为大家解答爬行的第一步!只需建立一个代理池即可!不然我就给你发一个IP地址!你还有锤子啊!这个问题的一些问题点,包括也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
为什么要使用代理?
我们在制作爬虫的过程中经常会遇到这种情况。首先,爬虫运行正常,爬取数据正常。一切看起来都那么好。然而,喝完一杯茶后,可能会出现错误,比如403 Forbidden。这时,当你打开网页查看时,可能会看到“您的IP访问频率过高”之类的提示。造成这种现象的原因是网站采取了一些反爬虫措施。例如,服务器会检测单位时间内某个IP的请求数量。如果超过这个阈值,就会直接拒绝服务,并返回一些错误信息。这种情况可以称为IP封锁。
这时候代理的作用就来了。你封锁了我的IP。我使用代理后,通过代理IP来请求数据,最后返回给我。你已经无计可施了,哈哈!废话不多说,咱们进入正题吧!
动态代理ip
动态代理,顾名思义,就是改变IP。这是通过拨号vps来实现的。
VPS服务器,即VPS(Virtual Private Server)技术,是将一台服务器划分为多台虚拟专用服务器的一种高品质服务。每个VPS都可以分配独立的公网IP地址、独立的操作系统、独立的大空间、独立的内存、独立的CPU资源、独立的执行程序和独立的系统配置等。此外还可以分配多个虚拟主机和无限的企业邮箱,用户还拥有独立的服务器功能。他们可以自己安装程序并独立重启服务器。通俗地说,VPS服务器就是虚拟专用服务器。用户无权接触物理机器,不需要对机器的物理硬件和其他设施负责维护。
拨号vps服务器在vps服务器的基本原理上增加了动态改变IP的功能。它可以不时地改变用户。常用来投票、刷单、批量注册微博、批量注册QQ等等,你能想到的都是用IP Server,有很多人用这个功能来抢手机、抢票。你可以想出所有利用IP赚钱的方法。
拨号vps设置动态代理服务器
加入群:960410445 大家一起交流吧。小编将一步步教你如何构建代理词。只要给我截图就可以了!
购买拨号vps时,选择预装centos7系统,还自带拨号软件pppoe。 (如果没有,请联系服务商安装)
我们来配置pppoe:
[root@localhost ~]# pppoe-setup #输入配置欢迎使用PPPoE 客户端设置。首先,我将对您的系统运行一些检查,以确保PPPoE 客户端安装正确.登录名输入您的登录名(默认根): #输入宽带帐户接口输入连接到PPPoE 调制解调器的以太网接口对于Solaris,这可能是类似于/dev/hme0。对于Linux,它将是ethX,其中“X”是一个数字。(默认eth0): # 只需按Enter 即可跳过。默认使用eth0网卡。 ifconfig可以查看网卡信息。您希望链接按需出现,还是持续保持?如果您希望它按需启动,请输入空闲时间(以秒为单位),之后应断开链接。如果您希望链接永久保持打开状态,请输入“no”(两个字母,小写)。注意: 需求激活的链接不能与动态IP 地址很好地交互。您可能会遇到一些需求激活链接的问题。请输入需求值(默认否): no#这里询问的是adsl连接后是否继续保持连接。或者可以在指定时间内(以秒计算)自动断开连接。在大多数情况下,我们希望手动打开和关闭连接。所以这里选择默认的no。 DNS请输入您的ISP 的主DNS 服务器的IP 地址。如果您的ISP 声称“该服务器将提供动态DNS 地址”,请在此输入“服务器”(全部小写)。如果您只是按Enter 键,我会假设您知道在此输入DNS 信息: #DNS 设置,按Enter 键跳过PASSWORD 请输入您的密码: #输入宽带密码请重新输入您的密码: #再次输入USERCTRL 请输入“yes”(三个字母,小写- )是否允许普通用户启动或停止DSL连接(默认是): yes#是否允许普通用户启动/关闭ADSL连接。默认是允许的。防火墙请选择要使用的防火墙规则。请注意,这些规则非常基本。强烈建议您使用更复杂的防火墙设置;然而,这些将提供基本的安全。如果您的计算机上运行任何服务器,则必须选择“无”并自行设置防火墙。否则,防火墙规则将拒绝访问所有标准服务器,如Web、电子邮件、ftp 等。如果您使用SSH,规则将阻止分配特权源端口的传出SSH 连接。防火墙选择为:0 – NONE: 此脚本将不设置任何防火墙规则。您有责任确保您的机器的安全。强烈建议您使用某种防火墙规则。1 – STANDALONE: 适用于基本的独立网络冲浪工作站2 – MASQUERADE: 适用于充当LAN 的Internet 网关的计算机选择防火墙类型(0-2): 0#防火墙选项。这里提供的防火墙可以为您提供基本的安全防护。我不推荐它——你最好选择“NONE”选项0。无论什么样的用户,我建议你使用额外的工具来配置防火墙规则(iptables目前似乎是一个非常好的工具)。
在启动时启动此连接您要在启动时启动此连接吗?请输入否或是(默认否):yes#您要在启动时打开此连接吗? ** 您输入的内容摘要**以太网接口: eth0用户名: 123456按需激活: NoDNS: 不要调整防火墙: 无用户控制: 是接受这些设置并调整配置文件(是/否)? y#所有配置信息填写完毕后,系统会生成一份报告,完整显示您输入的配置信息。如果确认输入的配置信息正确,请输入yes写入配置文件。输入no 放弃配置。调整/etc/sysconfig/network-scripts/ifcfg-ppp0调整/etc/ppp/chap-secrets 和/etc/ppp/pap-secrets (但首先将其备份到/etc/ppp/chap-secrets.bak)(但是首先将其备份到/etc/ppp/pap-secrets.bak)恭喜,一切都应该已设置完毕!输入“/sbin/ifup ppp0”以打开您的xDSL 链接,然后输入“/sbin/ifdown ppp0”以打开它键入“/sbin/pppoe-status /etc/sysconfig/network-scripts/ifcfg-ppp0”以查看链接状态。配置完成,
引入三个命令:
pppoe-启动拨号
pppoe-停止断开连接
pppoe-status 查看拨号状态
[root@localhost ~]# pppoe-start[root@localhost ~]# pppoe-statuspppoe-status: 链接已启动并在接口ppp04: ppp0: POINTOPOINT、MULTICAST、NOARP、UP、LOWER_UP mtu 1480 qdisc pfifo_fast 状态未知qlen 3 link/上运行ppp inet xxx。 xxx。 xxx 对等点1.1.1.1/32 范围全局ppp0 valid_lft 永远Preferred_lft 永远
红色箭头所指的位置就是IP。
我们来测试一下是否可以连接网络。
[root@localhost ~]# ping www.baidu.comPING www.a.shifen.com (115.239.210.27) 56(84) 字节数据。来自115.239.210.27: 的64 字节icmp_seq=1 ttl=54 time=72.4 ms64 字节从115.239.210.27: icmp_seq=2 ttl=54 time=70.4 ms64 字节到115.239.210.27: icmp_seq=3 ttl=54 time=70.7 msok,网络可用。
代理选择使用TinyProxy。
百胜安装:
[root@localhost ~]# yum -y 安装tinyproxy
已加载插件: fastmirror
从缓存的主机文件加载镜像速度
* base: 镜像.163.com
* extras: 镜像.cn99.com
* 更新:镜像.163.com
没有可用的tinyproxy 软件包。
Error: 无事可做
新系统上的yum源需要自己配置。上面报错是因为镜像源没有这个包。
Add-in Enterprise Linux Add-on Packages (EPEL),企业版Linux Add-on Packages(以下简称EPEL)是一个Fedora 特殊兴趣小组,旨在为Enterprise 创建、维护和管理高质量的附加包集Linux,适用对象包括但不限于Red Hat Enterprise Linux (RHEL)、CentOS、Scientific Linux (SL)、Oracle Linux (OL)。 (https://fedoraproject.org/wiki/EPEL/zh-cn)
在centos系统上安装并启用epel source :
yum install epel-release[root@localhost ~]# yum install epel-releaseLoadedplugins:fastestmirror从缓存的主机文件加载镜像速度*base:mirrors.163.com*extras:mirrors.cn99.com*updates:mirrors.163.com解决依赖关系–运行事务检查—包epel-release.noarch 0:7-11将被安装–完成依赖关系解析依赖关系已解决========================================================================================================================================================================================================================包Arch 版本存储库大小======================================================================================================================================================================================================================安装: epel-release noarch 7-11 额外15 k 交易摘要===============================================================================================================================================================================================================================安装1个软件包总下载大小: 15 k安装大小: 24 k这样可以吗[y/d/N]: y#开始下载软件包:epel-release-7-11 .noarch。转速| 15 kB 00:00:00 运行事务检查运行事务测试事务测试成功运行事务正在安装: epel-release-7-11.noarch 1/1 正在验证: epel-release-7-11.noarch 1/1 已安装: epel-release.noarch 0:7-11 完成!重新执行thinproxy安装命令:
配置代理、访问源限制和端口设置。
[root@localhost ~]# vi /etc/tinyproxy/tinyproxy.conf 修改Port端口,默认为8888
端口8888
注释掉Allow允许所有人访问代理
#允许127.0.0.1
配置完成后,启动tinyproxy。
tinyproxy启动代理
Killall tinyproxy 关闭所有端口(无需killall命令,安装yum install psmisc)
[root@localhost ~]#firewall-cmd –zone=public –add-port=8888/tcp –permanent #设置防火墙允许8888端口通过成功[root@localhost ~]#firewall-cmd — reload#Reload 下载防火墙配置成功。全部配置完成,测试代理是否可用。 pppoe-status 检查IP,Google 插件SwitchyOmega 配置代理。
选择配置的代理。如果可以正常访问,则说明代理服务器建立成功。
Python操作pppoe更改ip
python3环境安装
yum -y install wget#安装wget 下载wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz #下载tar -xvf Python-3.6.5.tgz#解压cd Python-3.6. 5#进入文件夹./configure prefix=/usr/local/python3#配置编译地址make make install#开始编译ln -s /usr/local/python3/bin/python3 /usr/bin/python3#配置软连接
然后顺便安装pip3和redis(python操作redis模块)。下一步将使用python3来操作redis。
yum install -y python34-setuptoolseasy_install-3.4 pippip3 安装redis
import os#切换IP,重启代理服务def changeIP(): os.system(‘pppoe-stop’) #断开连接时间.sleep(2) os.popen(‘pppoe-start’) #等待2s重拨时间。 sleep(8) os.popen(‘service tinyproxy restart’) #等待重拨完成,重新启动代理服务#获取当前IPdef extractIP(): infor=os.popen(‘pppoe-status’).read() #读取代理ip=re.search(‘(\d+\.\d+\.\d+\.\d+)’,infor).group(1) #正则匹配ip print(ip) 返回ip构建代理池(redis)
下载安装包
wget http://download.redis.io/releases/redis-4.0.2.tar.gz 解压安装包并安装
tar xzf redis-4.0.2.tar.gz
cd redis-4.0.2
制作
进行安装
启动redis
redis服务器
python操作redis写入ip
import re,time,os,datetime,redis#获取时间def getTime(): numtime=datetime.datetime.now().strftime(‘%Y-%m-%d %H-%M-%S— ‘) return numtime#切换IP,重启代理服务def changeIP(): os.system(‘pppoe-stop’) time.sleep(2) os.popen(‘pppoe-start’) time.sleep(8) os. popen(‘service tinyproxy restart’)#获取当前IP def extractIP(): infor=os.popen(‘pppoe-status’).read() try: ip=re.search(‘(\d+\.\d+\. \ d+\.\d+)’,infor).group(1) print(ip) return ip except Exception as e: log_list.append(getTime()+’提取IP错误:’+str(e)) return False##删除ip对应key ip1def updateDel(): r=redis.Redis(host=”, port=6379, db=0,decode_responses=True,password=”) r.delete(‘ip1’)#重写ip对应key Key ip1def updatePut(ip): print(‘更新ip’) r=redis.Redis(host=”, port=6379, db=0,decode_responses=True,password=”) r.set(‘ip1′, ip+’:8888′) print(‘更新完成’)if __name__==’__main__’: #删除ip后重拨20s state=updateDel() time.sleep(20) os.popen(‘killall tinyproxy’) #重新连接changeIP( ) #获取当前IP ip=extractIP() if ip: updatePut(ip) redis使用的键值对也可以写在一个表中,这样提取ip更方便。
这意味着删除数据库中的IP后,20秒后重拨,以保证提取的IP有20s的响应时间来运行爬虫。
crontab设置计划任务
crontab -e
0 */1 * * * python3 /root/zhaozhi/IP.py 每小时执行一次(测试可用IP时间,自行更改)
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/154293.html
用户评论
泪湿青衫
涨姿势了,以前都不知道要搭建代理池啊,难怪我的爬虫经常被封ip,看来以后得学习一下弄一个代理池
有10位网友表示赞同!
oО清风挽发oО
说的对,爬虫第一步就是搭建代理池!现在网站防护越来越厉害了,随便爬个IP就能被封禁。
有7位网友表示赞同!
惦着脚尖摘太阳
我之前用了一个免费的代理池,结果经常断线,影响爬取效率还挺大。感觉还是要花点钱找个靠谱的代理池平台
有13位网友表示赞同!
肆忌
搭建代理池确实比较费时,我还想简单直接一点的使用一些现成的爬虫工具或者脚本,是不是可以不用搭建?
有9位网友表示赞同!
海盟山誓总是赊
完全同意你的观点!之前就因为IP被封禁导致爬取失败过很多次,真是浪费了时间和精力。以后一定要重视这一步!
有10位网友表示赞同!
陌上蔷薇
代理池这种东西对新手来说真的太复杂了吧?有没有简单一点的办法,比如直接使用那些免费的爬虫工具啊。
有7位网友表示赞同!
纯情小火鸡
搭建代理池确实是必要的,但这可不是一件容易的事,需要学习相关的技术知识才行。
有5位网友表示赞同!
减肥伤身#
我之前用过一些付费的代理池,服务感觉还行,但价格比较贵。也不知道有没有更实惠的选择
有17位网友表示赞同!
拥菢过后只剰凄凉
IP被封禁这个事情真的太头疼了!看来以后爬虫得学会使用代理池来保护自己
有12位网友表示赞同!
红尘滚滚
完全认同你的说法!从我这开始学啦,搭建代理池第一步,感谢分享!
有10位网友表示赞同!
未来未必来
代理池确实可以有效提升爬虫的成功率和效率,只是希望代理池价格不要太贵啊
有11位网友表示赞同!
灬一抹丶苍白
搭建代理池的确是爬虫工作中的重要步骤,不然一封你IP,什么都没爬到。
有16位网友表示赞同!
别伤我i
不过搭建代理池也需要一定的技术基础吧?我有点担心自己学习不过来…
有5位网友表示赞同!
孤街浪途
之前爬虫的时候遇到了很多IP被封禁的问题,现在看来是因为没有搭建代理池!
有15位网友表示赞同!
心亡则人忘
感觉爬虫越来越难做了!需要学习那么多技术知识才能成功爬取数据
有13位网友表示赞同!
有些人,只适合好奇~
这篇文章很实用,以前根本不知道搭建代理池这么重要。
有6位网友表示赞同!
在哪跌倒こ就在哪躺下
对新手来说,搭建代理池可能确实比较困难,希望能有更多简单的解决方法。
有12位网友表示赞同!