网上有很多讲 用 Python 爬取代理 ip 的文章,如此的文章一搜就有一堆,我自个按照相关的教程尝试了下,确实能够抓取到很多 ip。不过在把 ip 保存到本地文件的过程中,由于保存的格式不美观,我尝试修改代码以改变保存格式,因为在爬取的时候只设置了 Use-Agent,没有设置 proxy,所以在多次运行爬虫脚本后,最后成功被西刺代理网站封掉了我真实的 ip。这下再也不能访问西刺代理的网站了…

该网页无法正常运作
www.xicidaili.com 目前无法处理此请求。
HTTP ERROR 503

既然电脑不能访问西刺代理官网,我就尝试用手机去访问,用手机流量可以打开西刺网站,用手机连接 WiFi 不能打开西刺网站。

用手机流量访问西刺代理,查看国内普通代理页面,在爬虫脚本中加入 普通代理ip,代码如下

import requestsheaders = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36','Host':'www.xicidaili.com'}
url = 'http://www.xicidaili.com/nn/'
proxy = '218.28.58.150:53281'
proxies = {'http':'http://' + proxy
}
res = requests.get(url,headers=headers,proxies=proxies)
print(res.status_code)

更改多次代理 ip 后,有的返回 503,有的返回 ...Max retries exceeded with url...,如果自己随便设置一个 ip 和端口,返回的结果是 ...Max retries exceeded with url...,这就说明了一个问题,有用的代理 ip 被西刺网站给拒绝了,暂时不知道为什么设置了有用的代理 ip,还是被西刺代理屏蔽,这里我想到的一个原因是用普通代理还是会被西刺识别出真实 ip,而我尝试用高匿代理去测试,没找到一个可用的高匿代理,gg 思密达。

经过几个小时的摸索,总算找到了一个可行的方法。下面记录下自己的摸索过程。

在百度首页输入关键字 “ip”,会在结果页显示自己电脑的 ip 地址,如果电脑用了代理 ip,结果页就会显示代理 ip。

为了检测西刺代理的 ip 是否能用,可以这样做:依次打开 IE 浏览器 --> Internet选项 --> 连接 --> 局域网设置 --> 代理服务器下边的复选框选中,写上代理 ip 和端口,如果设置无误,而且代理 ip 可用,那么在百度首页输入 “ip”,显示的则是代理 ip 地址。访问西刺代理网站,显示 HTTP ERROR 503

还有一种检测方法,用 Python 中的 selenium 模块模拟谷歌浏览器访问。加入西刺代理官网上的普通代理 ip 后访问西刺官网,竟然可以浏览,这也是无意间发现的。至于 selenium 如何使用,这里不做过多介绍,下面贴出源码:

from selenium import webdriver
from bs4 import BeautifulSoup
import json,time'''模拟谷歌浏览器访问西刺代理网站,并返回前5页的网页源代码'''
def get_page_source(start_url):chrome_options = webdriver.ChromeOptions()chrome_options.add_argument('--proxy-server=http://' + proxy)browser = webdriver.Chrome(chrome_options=chrome_options)   #加入代理browser.get(start_url)html = browser.page_source  #获取单个网页的源代码htmls.append(html)time.sleep(2)for page in range(1,5):     #获取2-5页的内容next_page = browser.find_element_by_class_name('next_page') #获取下一页按钮next_page.click()   #点击下一页按钮html = browser.page_sourcehtmls.append(html)time.sleep(2)'''从网页源代码中获取代理ip'''
def get_http_proxy(htmls):for html in htmls:soup = BeautifulSoup(html, 'lxml')item = soup.find('table')trs = item.find_all('tr')for tr in trs[1:]:http_proxy = {} #把代理ip保存成字典格式td = tr.find_all('td')http_proxy['ip'] = td[1].texthttp_proxy['port'] = td[2].texthttp_proxy['protocol'] = td[5].textif td[5].text == 'HTTPS':   #把HTTP和HTTPS分开保存到两个不同的文件中L_https.append(http_proxy)else:L_http.append(http_proxy)'''把HTTP和HTTPS分开保存到两个不同的文件中'''
def save_file():file_http = 'http_proxys.json'file_https = 'https_proxys.json'with open(file_http, 'w', encoding='utf-8') as f:f.write(json.dumps(L_http, indent=2))       #indent=2 表示带上缩进,这样json文件比较美观with  open(file_https, 'w', encoding='utf-8') as f:f.write((json.dumps(L_https, indent=2)))if __name__ == '__main__':htmls = []L_http = []L_https = []proxy = '218.28.58.150:53281'   #这个ip和端口要换成可用的代理ipstart_url = 'https://www.xicidaili.com/nn/1'    #这个是西刺代理ip官网高匿ip的第一页get_page_source(start_url)  #获取网页的源代码get_http_proxy(htmls)   #从网页源代码中获取代理ipsave_file()             #把代理ip保存到json文件print('Done!')

最后总结:本篇主要记录被西刺封掉本地ip后如何访问西刺,没有介绍如何验证抓取到的 ip 的有效性,代理 ip 池的维护以后再搞。

解决被西刺代理封ip的问题相关推荐

  1. 应对IP被封--抓取西刺代理,并构建自己的代理池

    一.IP简介: 互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),缩写为IP地址(英语:IP Address),是分配给网络上使用网际协议(英语:Inte ...

  2. 爬取西刺网实现ip代理池

    使用ip代理服务器可以防止在爬虫时被封本机ip.国内免费的高匿代理可以选择西刺网 总体目标是写一个爬虫,将这些字段保存在数据库中,然后筛选速度快的作为代理服务器,实现ip代理池. 在这里使用reque ...

  3. 实战项目一:爬取西刺代理(获取代理IP)

    爬虫的学习就是与反扒措施.反扒系统做斗争的一个过程,而使用代理IP是我们重要的防反扒的重要措施,代理IP的来源有两种一是你花钱去购买商家会给你提供一个接口你直接调用就可以了,二是自己在网上爬取高效IP ...

  4. 从西刺代理爬取代理ip,并验证是否可用

    最近又重新拾起了久违的爬虫,写了一个代理ip的爬取,验证和存储器. 1.爬取网站是西刺代理,使用了requests+beautifulsoup库 2.验证的网站使用了京东和淘宝的首页,用了urllib ...

  5. python之利用requests库爬取西刺代理,并检验IP的活性

    用爬虫爬取某个网站的数据时,如果用一个IP频繁的向该网站请求大量数据,那么你的ip就可能会被该网站拉入黑名单,导致你不能访问该网站,这个时候就需要用到IP动态代理,即让爬虫爬取一定数据后更换IP来继续 ...

  6. 代理IP爬取和验证(快代理西刺代理)

    前言 仅仅伪装网页agent是不够的,你还需要一点新东西 今天主要讲解两个比较知名的国内免费IP代理网站:西刺代理&快代理,我们主要的目标是爬取其免费的高匿代理,这些IP有两大特点:免费,不稳 ...

  7. Python 多线程爬取西刺代理

    西刺代理是一个国内IP代理,由于代理倒闭了,所以我就把原来的代码放出来供大家学习吧. 镜像地址:https://www.blib.cn/url/xcdl.html 首先找到所有的tr标签,与class ...

  8. 爬虫学习3.2 抓取西刺代理,并构建自己的代理池

    任务描述 学习什么是IP,为什么会出现IP被封,如何应对IP被封的问题. 抓取西刺代理,并构建自己的代理池. 西刺直通点:https://www.xicidaili.com/ . 参考资料:https ...

  9. scrapy 西刺代理 爬取

    原文链接: scrapy 西刺代理 爬取 上一篇: TensorFlow vgg19 图像识别 下一篇: scrapy 代理使用 爬取西刺网的代理信息,保存为json文件 http://www.xic ...

  10. 抓取西刺代理,并构建自己的代理池

    1.IP地址: 互联网协议地址(Internet Protocol Address,又译为网际协议地址),缩写为IP地址(IP Address),是分配给用户上网使用的网际协议(IP)的设备的数字标签 ...

最新文章

  1. MySQL · 引擎分析 · InnoDB行锁分析
  2. Object-C 入门介绍
  3. [备忘]silverlight中关于“复制到输出目录”和“生成操作”
  4. JDK8 HashMap--removeNode()移除节点方法
  5. AgileEAS.NET平台应用开发教程-案例计划
  6. 现代密码学5.5--Random-Oracle模型
  7. FFmpeg中的日志以及avio实现对文件的读写功能
  8. mysql 条件 函数_mysql 函数 时间函数,数学函数,字符串函数,条件判断函数
  9. 工作144:时间戳格式化
  10. Oracle数据库基础知识_数值类型及函数
  11. 基于FPGA的多人表决器(VHDL)
  12. 项目经理之项目的投资回报率
  13. svchost.exe小记
  14. 学好MySQL增删查改,争取不做CURD程序员【下篇(六个小时肝MySQL万字大总结)】
  15. 请问matlab里面exp函数怎么用啊,Matlab基本函数-exp函数
  16. 深度学习推理框架调研总结
  17. UE4地形操作出现黑框的处理
  18. 【使用python和flask建个人博客】增加了重复类型的卡片功能,用于更好的完成日常的工作与生活
  19. 新手学PS要怎么起步?
  20. 台式机怎样连接连接蓝牙耳机?搜索不到蓝牙耳机?

热门文章

  1. Mac运行Windows上的应用程序-以PowerDesigner为例
  2. 通过qq进行ip定位
  3. 光储并网直流微电网控制策略及仿真模型
  4. 公司拿到了量化交易模型, 交易员和策略师就可滚蛋了?
  5. 17张程序员壁纸推荐,是否有一张你喜欢的?
  6. 未注册小程序名称-小程序名称大全-周期更新未注册的好名字
  7. 高中生入门计算机编程,高中生必看:入门学软件编程,看这三点...
  8. Android:在酷安发布应用流程记录
  9. JAVA垃圾回收机制
  10. 如何将文件快速拷入自己的谷歌云盘