前言:本来准备写一个刷空间留言的脚本,然而kb TX,无限循环空间验证码。上午还傻x的学验证码识别,后来才发现根本发不了留言,即使填的是对的,仍然继续弹出。无奈,睡了一觉,开始搞新玩意–代理IP!其实之前就应该用到的,然而一直用selenium,没好好看header,也没用cookie和IP。之后用到再补上,同时还有简单验证码的识别等。

可以了解一下代理IP相关知识:通过Python爬虫代理IP快速增加博客阅读量
发现一篇很好的文章: Python3网络爬虫(十一):爬虫黑科技之让你的爬虫程序更像人类用户的行为(代理IP池等)
关于刷访问量,主要机制是网页限制仅不同IP登陆才能增加访问量,虽然有的网页是根据cookies增加,后者更低级。

目录

    • 目录
  • 第一部分 requests ChromeDriver PhantomJS的代理IP使用
    • 1-1 requests使用代理IP
    • 1-2 ChromeDriver使用代理IP
    • 1-3 PhantomJS使用代理IP
  • 第二部分测试代理IP的可用性
    • 2-1 未使用线程测试
    • 2-2 使用多线程测试

第一部分 requests , ChromeDriver, PhantomJS的代理IP使用

1-1 requests使用代理IP

 http = 'http://'+str(ip)proxies = {"http": http}try:r = requests.get("http://blog.csdn.net/qq_36962569/article/details/77387299", proxies=proxies)
except Exception as e:print(+e)

同理,requests模块添加headers ,cookies ,data,可以直接

requests.get(url,headers=headers)
requests.get(url,cookies=cookies
requests.get(url,data=data)

也可以传递多个参数,

requests.get(url,headers=headers,data=data)

参考链接:
Python 笔记七:Requests爬虫技巧(隆重推出,十分详细)
Python爬虫技巧—设置代理IP

1-2 ChromeDriver使用代理IP

def ChromeDriverWithIP():PROXY = "47.52.108.18"chrome_options = webdriver.ChromeOptions()# 两种用法添加代理IP# chrome_options.add_argument('--proxy-server=http://35.189.128.127')chrome_options.add_argument('--proxy-server={0}'.format(PROXY))# 传递代理IPchrome = webdriver.Chrome(chrome_options=chrome_options)chrome.get('http://www.cnblogs.com/buzhizhitong/p/5714419.html')print('2: ', chrome.page_source)

1-3 PhantomJS使用代理IP

#phantomjs selenium 如何动态修改代理
from selenium import webdriver
from selenium.webdriver import DesiredCapabilities
from selenium.webdriver.common.proxy import Proxy
from selenium.webdriver.common.proxy import ProxyTypedef DynamicUsingIP():proxy = Proxy({'proxyType': ProxyType.MANUAL,'httpProxy': '210.38.1.134'  # 代理ip和端口})# 新建一个代理IP对象desired_capabilities = DesiredCapabilities.PHANTOMJS.copy()# 加入代理IPproxy.add_to_capabilities(desired_capabilities)driver = webdriver.PhantomJS(desired_capabilities=desired_capabilities)# 测试一下,打开使用的代理IP地址信息driver.get('http://1212.ip138.com/ic.asp')print(driver.page_source)# # 现在开始切换ip# # 再新建一个ip# proxy = Proxy(#     {#         'proxyType': ProxyType.MANUAL,#         'httpProxy': 'ip:port'  # 代理ip和端口#     }# )# # 再新建一个“期望技能”,()# desired_capabilities = DesiredCapabilities.PHANTOMJS.copy()# # 把代理ip加入到技能中# proxy.add_to_capabilities(desired_capabilities)# # 新建一个会话,并把技能传入# driver.start_session(desired_capabilities)# driver.get('http://httpbin.org/ip')# print(driver.page_source)driver.quit()

参考链接:
盘点selenium phantomJS使用的坑(介绍PhantomJS相关的注意事项)
在Selenium中设置代理IP(介绍多种设置方法)
selenium phantomjs 设置代理ip方法
phantomjs和selenium设置proxy、headers()

第二部分测试代理IP的可用性

2-1 未使用线程测试

# IP check,将可用的IP重新保存到IP
def IPCheck():IP = []SuccessIP = []# 读取文件with open('IP.txt','r') as f:for line in f:IP.append(line[:-1])# request模块使用代理for ip in IP:http = 'http://'+str(ip)proxies = {"http": http}time.sleep(10)try:r = requests.get("http://blog.csdn.net/qq_36962569/article/details/77387299", proxies=proxies)except:print(str(ip)+'---connect failed')else:SuccessIP.append(ip)print(str(ip)+'---success')# 重新保存n=0f=open('IP.txt','w')for ip in SuccessIP:f.write(ip+'\n')n+=1f.close()print('Total are '+str(n)+' successful IP')

速度非常慢,基本上测试50个,得用3分钟。而使用多线程,测试70个,仅用十来秒(真tn的快嘞)。
参考链接:
使用python验证代理ip是否可用

2-2 使用多线程测试

# 使用多线程验证IP 可用性
def TreadCheckIP():# 获得IPproxys = []with open('IP.txt','r') as f:for line in f:proxys.append(line[:-1])proxy_ip = open('proxy_ip.txt', 'w')  # 新建一个储存有效IP的文档lock = threading.Lock()  # 建立一个锁# 验证代理IP有效性的方法def test(i):socket.setdefaulttimeout(5)  # 设置全局超时时间try:http = 'http://' + str(proxys[i])proxies = {"http": http}r = requests.get("http://blog.csdn.net/qq_36962569/article/details/77387299", proxies=proxies)lock.acquire()  # 获得锁print(proxys[i], 'is OK')proxy_ip.write('%s\n' % str(proxys[i]))  # 写入该代理IPlock.release()  # 释放锁except Exception as e:lock.acquire()print(proxys[i], e)lock.release()# 单线程验证'''for i in range(len(proxys)):test(i)'''# 多线程验证threads = []for i in range(len(proxys)):thread = threading.Thread(target=test, args=[i])threads.append(thread)thread.start()# 阻塞主进程,等待所有子线程结束for thread in threads:thread.join()proxy_ip.close()  # 关闭文件

关于多线程还不是很懂,自己还写不出来,后续继续了解学习。
参考链接:
python爬虫成长之路(二):抓取代理IP并多线程验证(写的非常好)

【Python3.6爬虫学习记录】(十一)使用代理IP及用多线程测试IP可用性--刷访问量相关推荐

  1. 【Python3.6爬虫学习记录】(十三)在阿里云服务器上运行爬虫

    前言: 也快开学了,学习的兴趣逐渐下降.搞点事情,增加点乐子. 昨天比较了阿里云和腾讯云,都有免费试用机会.都要先实名认证,阿里云每天10点开始抢资格,可以免费领取六个月的基础版:腾讯每天9:30开始 ...

  2. 【Python3.6爬虫学习记录】(九)模拟登陆QQ空间爬取好友所有留言并制作词云

    前言:非常郁闷,写了第三遍了,无故404 学了五天了,熬夜搞出这份代码,虽然一度卡死几个小时,但结果是好的. 目录 第一部分 Selenium+Chrome爬取空间留言 1.1 使用说明 1.2 代码 ...

  3. 【Python3.6爬虫学习记录】(十五)Scrapy爬虫框架的应用及马赛克拼图生成

    目录 目录 前言 1.Scrapy框架应用 1.1.Scrapy准备 1.2.创建项目及配置 1.3.网页分析及代码实现 1.3.1 items.py 中定义存储的数据 1.3.2 spiders文件 ...

  4. 【Python3.6爬虫学习记录】(十二)PhantomJS模拟登陆并爬取教务处学生照片(哈工大)

    前言:这也不算心血来潮的事情,前面几天文章都涉及过,之前一直觉得很麻烦.必须SSLVPN登陆,到教务处页面,然后进行页面跳转到照片页面.所以每次打开图片页面都要保证登陆教务处,当然可以使用cookie ...

  5. Python爬虫学习第十一天---pymongo模块使用

    Python爬虫学习第十一天-pymongo模块使用 一.安装pymongo模块 python3 -m pip install pymongo 二.pymongo模块的使用 1.配置基础项 user ...

  6. Python3 爬虫学习笔记 C15【代理的基本使用】

    Python3 爬虫学习笔记第十五章 -- [代理的基本使用] 文章目录 [15.1]代理初识 [15.2]urllib 库使用代理 [15.3]requests 库使用代理 [15.4]Seleni ...

  7. 爬虫学习记录3:request库基础用法

    1.request库基础用法 1.1get()及post()对比解析(发送请求) # 百度举例 import requests url = 'https://www.baidu.com/' heade ...

  8. Python3网络爬虫使用User Agent和代理IP隐藏身份

    运行平台:Windows  Python版本:Python3.x  IDE:PyCharm3.6 转载自:http://blog.csdn.net/c406495762/article/details ...

  9. 基于jupyter notebook的简单爬虫学习记录

    目录 前言 一.基础理解 二.前期准备 三.爬虫实操[入门] 3.1.引入库 3.2.请求网页 3.3.解析网页 3.3.1.网页解读 3.3.2.熟悉部分BeautifulSoup语法规则 3.4. ...

最新文章

  1. php 长文本_php字符串太长怎么办
  2. hdu2.1.2 How many prime numbers(计算素数的个数)
  3. Geany包含中文运行报错解决办法
  4. 简单介绍Linux下安装Tomcat的步骤
  5. python术语中英对照栈图_Python常用技术栈总结
  6. Java 改变cmd颜色_9 个小技巧让你的 if else 看起来更优雅!
  7. C++ Primer 第10章 习题10.24
  8. nvarchar转换为int类型失败_2.2 C++强制类型转换 | 将3.3转换为整型输出
  9. qt同时两个动画执行_Qt 动画应用
  10. css 图片放大1.2倍,什么是二倍图?怎样使用二倍图?
  11. 房东要涨800房租,我用Python抓取帝都几万套房源信息,主动涨了1000。
  12. 这游戏到底怎么了? 一年后,再看《刺客信条奥德赛》
  13. 【Asan】新鲜货:使用ASan检测内存越界问题
  14. Python爬虫系列之某了么h5签名sign算法
  15. 联通大数据应用及沃云平台支撑能力
  16. 五款优质资源网站 每一个都让你欲罢不能
  17. 派森python_派森(Python)
  18. Opencv-python滤镜系列(3): 凹透镜滤镜效果实现
  19. 【数据结构】【实验作业05】求两个集合的并集、交集、差集,集合用链表
  20. 最好的嵌入式开发板是哪个?

热门文章

  1. hash trick在机器学习中的使用
  2. 【白嫖党】如何把前端学好?看完这篇,直呼:太强了!(历经半个月之作)
  3. Java面试重点总结
  4. 红黑树(Red-Black Tree) 简介
  5. 2016年北京中国云计算技术大会会后感
  6. 学习笔记Hystrix熔断器
  7. 【钉钉机器人发送消息,集成SpringBoot】
  8. 【无标题】软件工程是不是教会不怎么会写程序的人开发软件?
  9. 2021年塔式起重机司机最新解析及塔式起重机司机新版试题
  10. x86和arm框架下的centOS