python 代理ip 爬虫爬虫 ip池怎么做

玩蛇网提供最新Python编程技术信息以及Python资源下载!
您现在的位置:
黑客工具_Python多线程爬虫抓取扫描器
Python多线程爬虫扫描器
一、Python多线程扫描器介绍
对于小白来说,玩蛇网在这里介绍的扫描器,并非是条码扫描器;
其实多线程扫描器是中的一种,可以自动检测远程服务器、Web站点等安全漏洞、弱口令、扫描IP、文件、端口、目录的Python程序,它能够快速的准确的发现扫描目标所存在的漏洞,为渗透入侵安全检测等打下了铺垫。
python 多线程爬虫相关的知识也是Python黑客学习渗透技术必须所掌握的。
例如这个Python Hacker 工具,简单来说有如下作用:
&&&&1. 站点漏洞、木马、危险程序的扫描
&&&&2. 扫描对比文件差异、监控网站文件
&&&&3. 检测网页状态码 (200、403、404、500==)
&&&&4. 检测网站是否SEO作弊 [针对用户和搜索引擎返回不一样的结果]
&&&&5. 网站压力测试 iis连接数等 虚拟主机空间 连接数 150个
&&&&6. 模拟搜索引擎蜘蛛抓取 US User-Agent 用户代理
&&&&7. 网站程序以及版本确认,网站后台扫描
&&&&8. 扫描端口等等 玩蛇网
二、黑客多线程扫描器的功能
本次玩蛇网Python之家图文教程和视频教程中,需要实现的Python扫描器的简单功能有:
&&&&1. 扫描(加快速度)
&&&&2. 模拟搜索引擎爬虫(User-Agent)
&&&&3. 使用代理服务器(大量代理IP切换抓取)
&&&&4. 扫描状态码、文件目录等返回
&&&&5. 过滤不需要的文件或目录等
&&&&6. 可以手动更改匹配扫描的字典
&&&&7. 可以做成带图形化界面的黑客工具,
如下图所示:(本节教程为终端版,以后会推出相应的GUI版)
三、测试多线程爬虫环境搭建
&&&&1. \Mac OS X\Windows均可
&&&&2. 、Python2.X/Python3.x
&&&&3. 本地搭建测试用开源Web程序或Blog程序 (玩蛇网教程环境: apache2 + php5 + wordpress)
&&&&4. 抓取匹配的列表、目录或漏洞文件字典(wordpress , zblog, dedecms等)
&&&&5. 确保本地网络与被扫描服务器之间是连通、稳定的
&&&&6. 注:建议在本地搭建测试环境,切勿扫描网络上面其它网站、服务器,此为非法行为!
&&&& 声明:本视频教程仅为、测试使用,请勿用于非法途径和行为,
&&&& 一切后果自负与玩蛇网与斯巴达本人无关!
四、黑客工具实战代码案例剖析
# -*- coding:utf-8 -*-
__author__=&&
import urllib2
import threading
import Queue
import time
import random
q = Queue.Queue() # Queue产生一个队列,有3种类型队列 默认用 FIFO队列
threading_num = 5 # 开启5个线程
# 扫描本地IP或域名
domain_name = &http://127.0.0.1&
# 百度蜘蛛UA
Baidu_spider = &Mozilla/5.0 ( Baiduspider/2.0; +/search/spider.html)&
# 不需要的文件过滤列表
exclude_list = ['.jpg', '.gif', '.css', '.png', '.js', '.scss']
proxy_list = [ # 代理服务器,可能已经失效,换为自己的
{'http': '117.28.254.130:8080'},
{'http': '118.144.177.254:3128'},
{'http': '113.118.211.152:9797'},
# 打开字典文件,开始过滤不需要的文件路径
with open(&/home/leo/app_txt/wordpress.txt& , &r&) as lines:
for line in lines:
line = line.rstrip()
if os.path.splitext(line)[1] not in exclude_list:
q.put(line) #将line传入到队列 q 中
# 扫描器方法
def crawler():
while not q.empty(): # 循环
path = q.get() 将line从队列 q 中取出来
url = &%s%s& % (domain_name, path) # 组合url地址,用于下一步提交
random_proxy = random.choice(proxy_list) # 随机使用一个代理服务器
proxy_support = urllib2.ProxyHandler(random_proxy)
opener = urllib2.build_opener(proxy_support)
urllib2.install_opener(opener)
headers = {}
headers['User-Agent'] = Baidu_spider # 蜘蛛的头部信息
request = urllib2.Request(url, headers=headers)
response = urllib2.urlopen(request)
content = response.read()
if len(content): # 内容不为空的情况下返回状态码、路径
print &Status [%s]
- path: %s& % (response.code, path)
response.close()
time.sleep(1) # 休息一会儿,防止速度过快连接数过大被封掉IP
except urllib2.HTTPError as e:
# print e.code, path
pass # 异常处理,先暂时pass掉
if __name__ == '__main__':
# 创建多线程并指明函数的入口为crawler,以后还可以传参进去
for i in range(threading_num):
t = threading.Thread(target=crawler)
&&&&# 上面代码,我们一共导入了6个模块都是接下来需要使用的功能模块,
&&&&# os作用是对我们不需要扫描的后缀名文件进行筛选, &&&&
&&&&# urllib2负责抓取,而threading就是我们的Python多线程模块, &&&&
&&&&# 这次还需要用到Queue这个保证线程安全的队列模块, &&&&
&&&&# 其它两个比较简单,一个是随机模块random,另一个时间模块time
五、本文相关资源下载
黑客工具_Python多线程爬虫抓取扫描器 Python全部源码下载:
本地高速下载:
源码大小:1.6KB
Python多线程爬虫抓取扫描器
此为Pyhton多线程扫描器视频课程的内容页面,稍后更新,
提供课程相关资源和Python源码的下载,和详细使用图文教程。
黑客工具、黑客客扫描器、端口扫描、免费网页网站扫描器
百度网盘下载地址:
由于视频教程时长有50分钟左右,所以视频分为两节发送。
Python多线程爬虫抓取扫描器&&上节
Python多线程爬虫抓取扫描器&&下节
有任何疑问和建议都可以在评论区留言,探讨。
[ 视频播放密码 ]:QQqun
玩蛇网文章,转载请注明出处和文章网址:/crawler/multithreading-crawler-scanner.html []
我要小额赞助,鼓励作者写出更好的教程↓↓↓】
玩蛇网Python QQ群,欢迎加入: ①
修订日期:日 - 17时37分55秒
发布自玩蛇网
我要分享到:
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
有任何疑问和建议都可以在评论区留言,探讨。 [ 视频播放密码 ]:QQqun
书中自有123
书中自有123
视频播放密码 ]:QQqun
视频播放密码 ]:QQqun
视频播放密码 ]:QQqun
视频播放密码 ]:QQqun
视频播放密码 ]:QQqun
视频播放密码 ]:QQqun
视频播放密码 ]:QQqun
视频播放密码 ]:QQqun
视频播放密码 ]:QQqun
百家互联跟谁学
视频播放密码 ]:QQqun
视频播放密码 ]:QQqun
视频播放密码 ]:QQqun
视频播放密码 ]:QQqun
视频播放密码 ]:QQqun
视频播放密码 ]:QQqun
小狐狸的蓝色桔梗花
ilove太阳花
郭文辉不会飞丶
谢谢楼主!
i@dashen.tech ,多谢楼主
朗月明风.海
御姐范司令
下载的压缩包,字典文件.txt怎么没有? 能发一份吗,邮箱:
学习学习,多谢
学习学习,多谢
一个书生的奋斗
没有西瓜怎么算夏天
求资源,拜托了。
Happy王子Le
求资源,拜托了
谢谢斯巴达,
高升 · Mr.Black
求资源,拜托了。
邮箱: 求资源
必知PYTHON教程
Must Know PYTHON Tutorials
必知PYTHON模块
Must Know PYTHON Modules
最新内容 NEWS
图文精华 RECOMMEND
热点文章 HOT
Navigation
玩蛇网Python之家,简称玩蛇网,是一个致力于推广python编程技术、程序源码资源的个人网站。站长 斯巴达 是一位 长期关注 软件、互联网、服务器与各种开发技术的Python爱好者,建立本站旨在与更多朋友分享派森编程的乐趣!
本站团队成员: 斯巴达
欢迎加入团队...分布式爬虫之python动态获取随机选择出口ip - 推酷
分布式爬虫之python动态获取随机选择出口ip
这两天有几个朋友都在问我,你们爬虫的多ip方案是如何搞定的。 &
其实我们的方案多元化的,根据历史遗留的问题,大部分是采用的分布式http代理的方式,也就是开了n个虚拟机,然后安装http代理的服务,以前是squid做正向代理. &因为squid代理专业是专业,但是不够轻型。So , 用twisted构建了一个高性能的http代理,他的优点是可控性好,我们可以在http代理服务商,在做一层逻辑,比如是过滤
后来,取消了分布式http代理,在nat的服务节点上,构建了对于出口的ip控制. &&
现在我们的方式更加的简单,直接嵌入到代码里面,每个小时会自动切换ip & …. &多网卡或者是一个网卡多个子ip,这都是行的通的。&
这里就简单写下,如何让你的爬虫动态的选择出口ip… & &
文章的源地址是
http://xiaorui.cc
http://xiaorui.cc
下面是python requests 的实现方式,我相信对于数据的抓取用requests的要比urllib2多。 &
import socket
real_create_conn = socket.create_connection
def set_src_addr(*args):
address, timeout = args[0], args[1]
source_address = ('你需要绑定的ip地址', 0)
return real_create_conn(address, timeout, source_address)
socket.create_connection = set_src_addr
import requests
r = requests.get('http://ip.cn')
urllib2的实现的方式,这个方式更加的通用。。 。
# -*- coding=utf-8 -*-
import socket
import urllib2
true_socket = socket.socket
ipbind='xx.xx.xxx.xx'
def bound_socket(*a, **k):
sock = true_socket(*a, **k)
sock.bind((ipbind, 0))
return sock
socket.socket = bound_socket
response = urllib2.urlopen('')
html = response.read()
ip=re.search(r'code.(.*?)..code',html)
print ip.group(1)
不管是requests还是urllib2,他们的底层都是通过httplib这个模块实现的。&
在python2.7的httplib源码中就有说明的.. & source_address &这个就是你本地的某个ip地址。&
class httplib.HTTPSConnection(host[, port[, key_file[, cert_file[, strict[, timeout[, source_address[, context]]]]]]])
我们会发现,其实真的很简单,他的原理其实很像squid做多ip正向代理,曾经抓过包分析过,对比过,基本一致的。&
上面的两种方式更像是在httplib的层面加源地址,也就是bind ip ,如果做服务端的话,就用下面的方式…&
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((&127.0.0.1&,8099))
s.listen(5)
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致python爬虫-爬取代理IP并通过多线程快速验证 - 开源中国社区
当前访客身份:游客 [
当前位置:
发布于 日 15时,
在爬取一个专利查询网站的时候,反扒非常严,所以找个这样一段代码从免费代理Ip发布网站/nn/获取代理IP通过多线程验证码代理IP是否能够正常访问目标网站网站需要设置cookies登录
代码片段(5)
1.&[代码]代理ip采集 --西刺代理网站&&&&
mport urllib2
from BeautifulSoup import BeautifulSoup
# get the proxy
of = open('proxy.txt', 'w')
for page in range(1,50):
url = '/nn/%s' %page
user_agent = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0. Safari/537.36"
request = urllib2.Request(url)
request.add_header("User-Agent", user_agent)
content = urllib2.urlopen(request)
soup = BeautifulSoup(content)
trs = soup.find('table', {"id":"ip_list"}).findAll('tr')
for tr in trs[1:]:
tds = tr.findAll('td')
ip = tds[2].text.strip()
port = tds[3].text.strip()
protocol = tds[6].text.strip()
if protocol == 'HTTP' or protocol == 'HTTPS':
of.write('%s=%s:%s\n' % (protocol, ip, port))
print '%s://%s:%s' % (protocol, ip, port)
2.&[代码]验证&&&&
import urllib2
import threading
inFile = open('proxy.txt', 'r')
outFile = open('available.txt', 'w')
url = '/search/detail/index?d=CN@CN050928'
lock = threading.Lock()
def test():
lock.acquire()
line = inFile.readline().strip()
lock.release()
# if len(line) == 0: break
protocol, proxy = line.split('=')
cookie = "PHPSESSID=5f7mbqghvk1kt5n9illa0nr175; kmsign=9; KMUID=ezsEg1YCOzxg97EwAwUXAg=="
proxy_support = urllib2.ProxyHandler({protocol.lower():'://'.join(line.split('='))})
opener = urllib2.build_opener(proxy_support, urllib2.HTTPHandler)
urllib2.install_opener(opener)
request = urllib2.Request(url)
request.add_header("cookie",cookie)
content = urllib2.urlopen(request,timeout=4).read()
if len(content) &= 1000:
lock.acquire()
print 'add proxy', proxy
outFile.write('\"%s\",\n' %proxy)
lock.release()
print '出现验证码或IP被封杀'
except Exception, error:
print error
all_thread = []
for i in range(500):
t = threading.Thread(target=test)
all_thread.append(t)
for t in all_thread:
inFile.close()
outFile.close()
3.&[代码]代理ip采集
--有代理网站&&&&
import requests
of = open('proxy.txt', 'w')
url = 'http://www.youdaili.net/Daili/guonei/3661'
for i in range(1,4):
if i == 1:
Url = url+'.html'
Url = url+'_%s.html' %i
html = requests.get(Url).text
res = re.findall(r'\d+\.\d+\.\d+\.\d+\:\d+', html)
for pro in res:
of.write('http=%s\n' %pro)
4.&[代码]代理IP采集--好代理网站&&&&
# -*- coding:utf8 -*-
import requests
import time
from BeautifulSoup import BeautifulSoup
of = open('proxy.txt', 'w')
url = '/guonei/'
for i in range(1,20):
Url = '/guonei/' + str(i)
print "正在采集"+Url
html = requests.get(Url).text
bs = BeautifulSoup(html)
table = bs.find('table',{"class":"proxy_table"})
tr = table.findAll('tr')
for i in range(1,31):
td = tr[i].findAll('td')
proxy_ip = td[0].text.strip()
proxy_port = td[1].text.strip()
of.write('http=%s:%s\n' %(proxy_ip,proxy_port))
print 'http=%s:%s\n' %(proxy_ip,proxy_port)
time.sleep(2)
5.&[代码]附第三方代理工具&&&&
http://my.oschina.net/u/2463131/blog/512384
开源中国-程序员在线工具:
相关的代码(157)
2回/1005阅
0回/1135阅
不用正则吗
2楼:j_hao104 发表于
引用来自“自主创新”的评论不用正则吗后面更新了个用正则的,用正则或者xpath或者bs看自己情况了
3楼:自主创新 发表于
引用来自“自主创新”的评论不用正则吗引用来自“j_hao104”的评论后面更新了个用正则的,用正则或者xpath或者bs看自己情况了xpath感觉比正则简单不了多少啊
4楼:j_hao104 发表于
引用来自“自主创新”的评论不用正则吗引用来自“j_hao104”的评论后面更新了个用正则的,用正则或者xpath或者bs看自己情况了引用来自“自主创新”的评论xpath感觉比正则简单不了多少啊xpath适用于比较规范的的网页,正则只要你能写出漂亮的表达式,你就无敌了
5楼:自主创新 发表于
引用来自“自主创新”的评论不用正则吗引用来自“j_hao104”的评论后面更新了个用正则的,用正则或者xpath或者bs看自己情况了引用来自“自主创新”的评论xpath感觉比正则简单不了多少啊引用来自“j_hao104”的评论xpath适用于比较规范的的网页,正则只要你能写出漂亮的表达式,你就无敌了我可能对他们不了解,但是匹配IP和端口,东西不是特别多,所以我觉得正则方便一些
6楼:MrMyj 发表于
我也准备写个呢刚好看到。
7楼:chris.2016 发表于
开源从代码分享开始
j_hao104的其它代码

我要回帖

更多关于 python爬虫更换ip 的文章

 

随机推荐