本文实例讲述了Python基于scapy实现修改IP发送请求的方法。分享给大家供大家参考,具体如下:

今天同事想测试WAF的页面统计功能,所以需要模拟多个IP向多个域名发送请求,也就是需要修改源IP地址。这个如果使用socket库就比较麻烦了,
需要使用raw socket,相当麻烦。还好咱有scapy,轻松搞定。
DOMAIN是我随机构造的域名库,SOURCE也是随机构造的源IP地址。
#!/usr/bin/env python
#-*-encoding:UTF-8-*-
from scapy.all import *
from threading import Thread
from Queue import Queue
import random
import string
USER_AGENTS = ( # items used for picking random HTTP User-Agent header value
"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_7_0; en-US) AppleWebKit/534.21 (KHTML, like Gecko) Chrome/11.0.678.0 Safari/534.21",
"Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)",
"Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.2) Gecko/20020508 Netscape6/6.1",
"Mozilla/5.0 (X11;U; Linux i686; en-GB; rv:1.9.1) Gecko/20090624 Ubuntu/9.04 (jaunty) Firefox/3.5",
"Opera/9.80 (X11; U; Linux i686; en-US; rv:1.9.2.3) Presto/2.2.15 Version/10.10"
)
TOP_DOMAIN = ('com','org','net','gov','edu','mil','info','name','biz')
DOMAIN = ["www.%s.%s" %(
'.'.join(''.join(random.sample(string.ascii_lowercase, random.randint(2,6))) for x in range(random.randint(1,2))),
random.choice(TOP_DOMAIN))
for _ in range(100)
]
SOURCE = ['.'.join((str(random.randint(1,254)) for _ in range(4))) for _ in range(100)]
class Scan(Thread):
HTTPSTR = 'GET / HTTP/1.0\r\nHost: %s\r\nUser-Agent: %s\r\n\r\n'
def run(self):
for _ in xrange(100):
domain = random.choice(DOMAIN)
http = self.HTTPSTR % (domain,random.choice(USER_AGENTS))
try:
request = IP(src=random.choice(SOURCE),dst=domain) / TCP(dport=80) / http
#request = IP(dst=domain) / TCP(dport=80) / http
send(request)
except:
pass
task = []
for x in range(10):
t = Scan()
task.append(t)
for t in task:
t.start()
for t in task:
t.join()
print 'all task done!'
但这将导致一个问题,由于我们域名是随机构造的,发送请求肯定首先查找DNS,很可能解析失败。这里有两个方法解决这个问题:
1.将所有域名添加到hosts本地文件中,IP可以为服务器地址
2. 由于hosts文件不支持通配符表示,所以可以使用DNS代理,或者自己写小工具,想怎么解析就怎么解析,这里有一个https://github.com/phuslu/dnsproxy/blob/master/dnsproxy.py
更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
# Python
# scapy
# 修改
# IP
# 发送请求
# python使用scapy模块实现ping扫描的过程详解
# python使用scapy模块实现ARP扫描的过程
# Python3利用scapy局域网实现自动多线程arp扫描功能
# python2.7使用scapy发送syn实例
# 利用Python库Scapy解析pcap文件的方法
# Python项目 基于Scapy实现SYN泛洪攻击的方法
# Python利用scapy实现ARP欺骗的方法
# python 的 scapy库
# 实现网卡收发包的例子
# Python Scapy随心所欲研究TCP协议栈
# Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
# python通过scapy获取局域网所有主机mac地址示例
# python开发实时可视化仪表盘的示例
# 多个
# 进阶
# 操作技巧
# 相关内容
# 数据结构
# 给大家
# 很可能
# 不支持
# 可以使用
# 一个问题
# 更多关于
# 这将
# 所述
# 程序设计
# 解决这个问题
# 使用技巧
# 小工具
# 有一个
# 有两个
# 编程技巧
相关文章:
C++如何使用std::optional?(处理可选值)
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
建站主机默认首页配置指南:核心功能与访问路径优化
网站制作员失业,怎样查看自己网站的注册者?
个人网站制作流程图片大全,个人网站如何注销?
nginx修改上传文件大小限制的方法
子杰智能建站系统|零代码开发与AI生成SEO优化指南
如何在阿里云部署织梦网站?
已有域名和空间,如何快速搭建网站?
网站制作模板下载什么软件,ppt模板免费下载网站?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
如何在IIS7上新建站点并设置安全权限?
网站制作价目表怎么做,珍爱网婚介费用多少?
建站之星免费版是否永久可用?
C++时间戳转换成日期时间的步骤和示例代码
建站之星CMS建站配置指南:模板选择与SEO优化技巧
建站之星如何助力企业快速打造五合一网站?
建站之星图片链接生成指南:自助建站与智能设计教程
定制建站策划方案_专业建站与网站建设方案一站式指南
开源网站制作软件,开源网站什么意思?
如何零基础在云服务器搭建WordPress站点?
常州自助建站:操作简便模板丰富,企业个人快速搭建网站
如何在Golang中指定模块版本_使用go.mod控制版本号
c# Task.ConfigureAwait(true) 在什么场景下是必须的
佛山企业网站制作公司有哪些,沟通100网上服务官网?
如何在IIS管理器中快速创建并配置网站?
做企业网站制作流程,企业网站制作基本流程有哪些?
如何用景安虚拟主机手机版绑定域名建站?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
广州建站公司哪家好?十大优质服务商推荐
建站10G流量真的够用吗?如何应对访问高峰?
南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?
天津个人网站制作公司,天津网约车驾驶员从业资格证官网?
建站主机选择指南:服务器配置与SEO优化实战技巧
网站制作报价单模板图片,小松挖机官方网站报价?
如何快速搭建高效香港服务器网站?
黑客入侵网站服务器的常见手法有哪些?
如何获取PHP WAP自助建站系统源码?
全景视频制作网站有哪些,全景图怎么做成网页?
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
如何基于PHP生成高效IDC网络公司建站源码?
微信小程序 五星评分(包括半颗星评分)实例代码
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
大连网站制作公司哪家好一点,大连买房网站哪个好?
微信推文制作网站有哪些,怎么做微信推文,急?
简单实现Android文件上传
建设网站制作价格,怎样建立自己的公司网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。