Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例

本文实例讲述了Python3.4实现从HTTP代理网站批量获取代理并筛选的方法。分享给大家供大家参考,具体如下:

最近在写爬虫,苦于不采用代理的情况下,默认的IP不出几分钟就被封了,故而只能寻找代理。原以为找到HTTP代理就万事大吉了,没想到从那个网站获取的代理大部分都是不能用的,只有少部分能用。。。故而无奈之下,只能从那些代理网站大量获取代理IP,然后再拿过来进行进一步的筛选,将有效的代理IP提取出来,留待进一步使用。

筛选的主要原理是,通过main函数提取到未经筛选的代理rawProxyList,然后通过这些代理尝试连接目标网站(此文中是连接手机新浪网)。如果在规定时间内连接成功,则认定为有效代理,放到checkedProxyList之中。

__author__ = 'multiangle'
__edition__='python3.4'
import threading
import urllib.request as request
import time
rawProxyList=[]
checkedProxyList=[]
class proxycheck(threading.Thread):
 def __init__(self,proxy_list):
  threading.Thread.__init__(self)
  self.proxy_list=proxy_list
  self.timeout=3
  self.testurl='http://www.sina.cn/'
  self.testStr='手机新浪网'
 def checkproxy(self):
  cookies=request.HTTPCookieProcessor()
  for proxy in self.proxy_list:
   handler=request.ProxyHandler({'http':'http://%s'%(proxy)})
   opener=request.build_opener(cookies,handler)
   t1=time.time()
   try:
    req=opener.open(self.testurl,timeout=self.timeout)
    res=req.read()
    res=str(res,encoding='utf8')
    usetime=time.time()-t1
    if self.testStr in res:
     checkedProxyList.append((proxy,usetime))
   except Exception as e :
    print(e)
 def run(self):
  self.checkproxy()
if __name__=='__main__':
 num=20
 thread_num=10
 checkThrends=[]
 url='YOUR PROXY URL' #提取代理的网站。
 req=request.urlopen(url).read()
 req=str(req,encoding='utf-8')
 list=req.split('\r\n') #网站返回的是字符串格式,用'\r\n'进行分割
 rawProxyList=list
 print('get raw proxy')
 for i in rawProxyList:
  print(i)
 # s=proxycheck_test(rawProxyList)
 batch_size=int((len(rawProxyList)+thread_num-1)/thread_num)
 print(batch_size)
 for i in range(thread_num):
  t=proxycheck(rawProxyList[batch_size*i:batch_size*(i+1)])
  checkThrends.append(t)
 for i in range(checkThrends.__len__()):
  checkThrends[i].start()
 for i in range(checkThrends.__len__()):
  checkThrends[i].join()
 print(checkedProxyList.__len__(),' useful proxy is find')
 for i in checkedProxyList:
  print(i)

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

(0)

相关推荐

  • Python实现文件内容批量追加的方法示例

    本文实例讲述了Python实现文件内容批量追加的方法.分享给大家供大家参考,具体如下: #coding:utf-8 import os #-------代码段一 #获取当前文件夹 filePath = os.getcwd() #获取当前文件列表 fileNameList = os.listdir(filePath) fileDirList = [] #获取文件路径列表 for fileName in fileNameList: fileDirList.append(os.path.join(fi

  • Python批量更改文件名的实现方法

    Python批量更改文件名的实现方法 前言: 由于后台数据有好多,但是文案提供过来的图片命名全部没有按照格式来命名,Python这么强大的语言,肯定是能够处理这个问题的,于是我就写了一个小脚本批量改文件名. 版本相关 操作系统:Mac OS X EI Caption Python版本:2.7 IDE:Sublime 思路 我的思路是这样的,在当前文件下创建一个新的目录newfile,然后把所有的文件拷贝过去重命名一下就行了 素材 文案提供过来的图片全部都是1.jpg,2.jpg--这样顺序递增的

  • 【Python】Python的urllib模块、urllib2模块批量进行网页下载文件

    由于需要从某个网页上下载一些PDF文件,但是需要下载的PDF文件有几百个,所以不可能用人工点击来下载.正好Python有相关的模块,所以写了个程序来进行PDF文件的下载,顺便熟悉了Python的urllib模块和ulrllib2模块. 1.问题描述 需要从http://www.cvpapers.com/cvpr2014.html上下载几百个论文的PDF文件,该网页如下图所示: 2.问题解决 通过结合Python的urllib模块和urllib2模块来实现自动下载.代码如下: test.py #!

  • 批量获取及验证HTTP代理的Python脚本

    HTTP暴力破解.撞库,有一些惯用的技巧,比如: 1. 在扫号人人网时,我遇到单个账号错误两次,强制要求输入验证码,而对方并未实施IP策略. 我采用维护10万(用户名,密码) 队列的方式来绕过验证码.具体的做法是,当某个用户名.密码组合遇到需要验证码,就把该破解序列挂起,放到队列尾部等待下次测试,继续破解其他账号密码. 这样就可以保证2/3的时间都在进行正常破解和扫号. 2. 在破解美团网某系统账号时,我遇到了单个IP访问有一定限制,请求频率不可过快.于是我挂了72个 HTTP代理来解决这个问题

  • python批量添加zabbix Screens的两个脚本分享

    前言 在最初搭建公司监控系统的时候,最头疼的是需要把同类项目组的相同图形添加到一个Screens,由于只能一个一个的添加,非常耗时耗经历. 下面分享两个脚本来解决这个头疼的问题. 1.将单个主机的所有图形添加到一个Screens 使用方法 #更改main()函数里的url.username.password #参数一:主机名 #参数二:筛选图名称 python zabbix_screen_host.py 'zabbixserver' 'zabbixserver' zabbix_screen_ho

  • Python爬取qq music中的音乐url及批量下载

    前言 qq music上的音乐还是不少的,有些时候想要下载好听的音乐,但有每次在网页下载都是烦人的登录什么的.于是,来了个qqmusic的爬虫.至少我觉得for循环爬虫,最核心的应该就是找到待爬元素所在url吧.下面开始找吧(讲的不对不要笑我) 实现如下 #寻找url: 这个url可不想其他的网站那么好找.把我给累得不轻,关键是数据多,从那么多数据里面挑出有用的数据,最后组合为music真正的music.昨天做的时候整理的几个中间url: #url1:https://c.y.qq.com/sos

  • Python实现批量检测HTTP服务的状态

    用Python实现批量测试一组url的可用性(可以包括HTTP状态.响应时间等)并统计出现不可用情况的次数和频率等. 类似的,这样的脚本可以判断某个服务的可用性,以及在众多的服务提供者中选择最优的. 需求以及脚本实现的功能如下: 默认情况下,执行脚本会检测一组url的可用性. 如果可用,返回从脚本所在的机器到HTTP服务器所消耗的时间和内容等信息. 如果url不可用,则记录并提示用户,并显示不可用发生的时间. 默认情况下,允许最大的错误次数是200,数目可以自定义,如果达到允许的最大错误次数,则

  • Python实现ssh批量登录并执行命令

    局域网内有一百多台电脑,全部都是linux操作系统,所有电脑配置相同,系统完全相同(包括用户名和密码),ip地址是自动分配的.现在有个任务是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软件,拷贝某些文件,批量关机等.如果一台一台得手工去操作,费时又费力,如果要进行多个操作就更麻烦啦. 或许你会想到网络同传,网络同传是什么?就是在一台电脑上把电脑装好,配置好,然后利用某些软件,如"联想网络同传"把系统原样拷贝过去,在装系统时很有用,只要在一台电脑上装好,同传以后所有的电脑都装

  • Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例

    本文实例讲述了Python3.4实现从HTTP代理网站批量获取代理并筛选的方法.分享给大家供大家参考,具体如下: 最近在写爬虫,苦于不采用代理的情况下,默认的IP不出几分钟就被封了,故而只能寻找代理.原以为找到HTTP代理就万事大吉了,没想到从那个网站获取的代理大部分都是不能用的,只有少部分能用...故而无奈之下,只能从那些代理网站大量获取代理IP,然后再拿过来进行进一步的筛选,将有效的代理IP提取出来,留待进一步使用. 筛选的主要原理是,通过main函数提取到未经筛选的代理rawProxyLi

  • python 爬虫 批量获取代理ip的实例代码

    实例如下所示: import urllib.request import os, re,sys,time try: from StringIO import StringIO except ImportError: from io import StringIO loca = re.compile(r"""ion":"\D+", "ti""") #伪装成浏览器 header = {'User-Agent':

  • Java实现批量修改txt文件名称的方法示例

    本文实例讲述了Java实现批量修改txt文件名称的方法.分享给大家供大家参考,具体如下: 最近在做特征选择的实验时,需要批量修改一下文件名称,在这里做一下记录. package com.cqu.experiment; import java.io.File; /** * @author 作者: E-mail:@126.com * @version 创建时间:2016年12月26日 下午3:02:01 类说明 */ public class RenameTxt { public static vo

  • python实现本地批量ping多个IP的方法示例

    本文主要利用python的相关模块进行批量ping ,测试IP连通性. 下面看具体代码(python3): ''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书! ''' #!/usr/bin/env python #-*-coding:utf-8-*- import re import subprocess from io import StringIO import multipro

  • laravel实现批量更新多条记录的方法示例

    前言 相信熟悉laravel的童鞋都知道,laravel有批量一次性插入多条记录,却没有一次性按条件更新多条记录. 是否羡慕thinkphp的saveAll,是否羡慕ci的update_batch,但如此优雅的laravel怎么就没有类似的批量更新的方法呢? 高手在民间 Google了一下,发现stackoverflow( https://stackoverflow.com/questions/26133977/laravel-bulk-update )上已经有人写好了,但是并不能防止sql注入

  • 利用java批量给pdf加水印的方法示例

    前言 最近因为工作需要,要批量在pdf上加水印,但找了一圈pdf在mac下的水印工具,都不太好用,索性就用java写一个吧. 以下代码依赖itext5.3.3包,java操作pdf 依靠itext5.3.3. 示例代码 //读取原来的pdf PdfReader reader = new PdfReader("/test/" + "1.pdf"); //生成以后的pdf PdfStamper stamp = new PdfStamper(reader, new Fil

  • 使用Python脚本实现批量网站存活检测遇到问题及解决方法

    做渗透测试的时候,有个比较大的项目,里面有几百个网站,这样你必须首先确定哪些网站是正常,哪些网站是不正常的.所以自己就编了一个小脚本,为以后方便使用. 具体实现的代码如下: #!/usr/bin/python # -*- coding: UTF-8 -*- ''' @Author:joy_nick @博客:http://byd.dropsec.xyz/ ''' import requests import sys f = open('url.txt', 'r') url = f.readline

  • Python3使用requests登录人人影视网站的方法

    早就听说requests的库的强大,只是还没有接触,今天接触了一下,发现以前使用urllib,urllib2等方法真是太搓了-- 这里写些简单的使用初步作为一个记录 本文继续练习使用requests登录网站,人人影视有一项功能是签到功能,需要每天登录签到才能升级. 下面的代码python代码实现了使用requests登录网站的过程. 以下是使用fiddler抓包得到完整的HTTP请求头: POST http://www.zimuzu.tv/User/Login/ajaxLogin HTTP/1.

  • python3 批量获取对应端口服务的实例

    思路懒得写了. 依赖python-nmap,先在电脑上装nmap,不然用不了.openpyxl实际上没有用到,可以不安装. makeEx()没用到,懒得删了. #依赖python-nmap,openpyxl包 import nmap import time import openpyxl from multiprocessing.dummy import Pool as ThreadPool import multiprocessing # 1.同目录下创建一个input.txt,放入ip地址列

  • windows上面安装squid加速代理网站配置方法

    windows 上面安装squid 加速代理网站 windows squid 下载 //www.jb51.net/softs/43599.html 下载解压到 c:\squid c:\squid\etc\squid.conf 如下 复制代码 代码如下: #本地绑定的IP端口 http_port IP:80 vhost visible_hostname localhost cache_dir ufs c:/squid/cache 1024 16 256 cache_mem 100 MB #代理的I

随机推荐