爬⾍篇(9)Fiddler抓包请求⼀键转换成python代码
前⾔:前段时间由于需求,⽤Fiddler各种抓包,各种分析,主要是测试请求时添加cookie、添加请求头、添加url, 虽然前⾯有⼀键转换cookie/headers的⼯具(可以看我前⾯博客),但还是有些烦琐。 想着能不能将Fiddler抓到的请求⼀键转换成Python代码,但是在⽹上了⼀下,⽆果(有知道的同学可以评论留⾔,⼗分感谢), 于是决定⾃⼰写⼀个能将Fiddler⼀键转换成Python代码的Python代码。
话不多说,上代码(如果觉得有更好的优化⽅案请联系我修改):
#!/usr/bin/python
# -*- coding: UTF-8 -*-
str_filename = "2.txt"
# save_name = "re_test.py"
save_name = place("txt", "py")
class FidToPy():
getsavefilename
def __init__(self, str_name, sa_name):
self.str_filename = str_name
self.save_name = sa_name
< = ""
self.url_list = []
self.headers = {}
self.data = {}
def get_url(self):
infos = split("\n")[0]
self.url_list = [infos.split(" ")[0], infos.split(" ")[1]]
def get_headers(self):
infos = split("\n")[1:]
info = ""
for i in infos:
if "Cookie: " in i:
break
info += i + "\n"
headers = info.split("\n")
while "" in headers:
for i in headers:
if ": " not in i:
break
self.headers[i.split(": ")[0]] = i.split(": ")[1]
def get_cookies(self):
infos = split("\n")[1:]
cookies_flag = 0
for i in infos:
if "Cookie: " in i:
kies )
cookies_flag = 1
break
if cookies_flag==1:
def get_data(self):
try:
infos = split("\n")
for i in range(2, len(infos)):
if infos[i - 1] == "" and "HTTP" in infos[i + 1]:
self.data = infos[i]
break
break
self.data = {i.split("=")[0]: i.split("=")[1] for i in self.data.split("&")}
except:
pass
def get_req(self):
info_beg = "#!/usr/bin/python\n# -*- coding: UTF-8 -*-\nimport requests\n\n"
info_url = "url = \'{}\'\n".format(self.url_list[1])
info_headers = "headers = {}\n".format(self.headers)
info_cookies = "cookies = {}\n".kies)
info_data = "data = {}\n\n".format(self.data)
if "GET" in self.url_list[0]:
info_req = "html = (url, headers=headers, verify=False, cookies=cookies)\n"
else:
info_req = "html = requests.post(url, headers=headers, verify=False, cookies=cookies, data=data)\n"
info_end = "print())\)\n"
text = info_beg + info_url + info_headers + info_cookies + info_data + info_req + info_end
with open(save_name, "w+", encoding="utf8") as p:
p.write(text)
print("转化成功!!")
print(save_name, "⽂件保存!")
def read_infos(self):
with open(self.str_filename, "r+", encoding="utf-8") as p:
old_line = ""
for line in p:
if old_line == b"\n" de() == b"\n":
break
old_line = de()
< += old_line.decode()
# print(":", )
def start(self):
<_url()
<_headers()
<_cookies()
<_data()
print("self.url_list:", self.url_list)
print("self.headers:", self.headers)
print("kies:", kies)
print("self.data:", self.data)
<_req()
if __name__ == '__main__':
f = FidToPy(str_filename, save_name)
f.start()
使⽤教程:
⾸先从Fiddler选中你要转换的请求 -> Save -> Selected Session -> as Text(也可以选择as Text(Header only)...),如图所⽰:
这样,我们就得到了包含了这个请求的txt⽂本:
把这个⽂件移动到和前⾯Python代码同⼀个⽂件夹,然后修改Python中第四⾏的,改成你请求信息txt⽂件的名字,如:str_filename = ""
右键运⾏,就可以得到⼀个同名的.py⽂件,这个就是我们要的Python请求代码了,so simply!!
效果图:
原创不易,转载请标明出处。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。