如何通过http接口使用f12b实现批量提交链接
这里我们分别叙述了如何在浏览器直接使用此接口,以及通过java和python如何使用此接口。
一、以浏览器为例
(一)提交一个指令
serverURL=http://120.79.247.23/f12Browser/http?cmd=requestACommand #指令提交地址
username=test #测试专用用户名
password=123456 #测试专用密码
targetURL=http://www.baidu.com #你的目标url,这个可以修改为你指定的url
commandVersion=local_and_server #固定值
commandAction=none #固定值
1 请求链接=serverURL+username+password+targetURL+commandVersion+commandAction
如“http://120.79.247.23/f12Browser/http?cmd=requestACommand&username=test&password=123456&targetURL=http://www.baidu.com&commandVersion=local_and_server&commandAction=none”
2 将上述链接复制并黏贴至浏览器运行,会得到下面的字符串,表明指令提交成功。其中commandID为系统分配给你的唯一标识,后续操作需要通过该ID实现。
<status>success</status><commandID>19</commandID>
若status不为success,则返回格式为
<status>error</status><msg>异常信息</msg>
(二) 查询执行情况
serverURL=http://120.79.247.23/f12Browser/http?cmd=quaryACommand #指令查询地址
username=test #测试专用用户名
password=123456 #测试专用密码
commandID=19 #指令唯一标识
1 请求链接=serverURL+username+password+commandID
如“http://120.79.247.23/f12Browser/http?cmd=quaryACommand&username=test&password=123456&commandID=19”
2 将上述链接复制到浏览器执行,会得到下面的字符串。其中commandStatus表明了当前指令的执行情况,finished表明该指令已执行完成,可以向服务器请求执行结果
<status>success</status>
<commandID>19</commandID>
<commandVersion>local_and_server</commandVersion>
<targetURL>http://www.baidu.com</targetURL>
<commandAction>none<commandAction/>
<commandStatus>finished</commandStatus>
<createrID>1</createrID>
<createTime>2018-06-11 14:25:10.0</createTime>
<updateTime>2018-06-11 14:25:25.0</updateTime>
3 若指令还未开始还行,则commandStatus=create,未执行完成,则commandStatus=assigned
4 若查询过程中出现异常,返回格式为:
<status>error</status><msg>异常信息</msg>
(三)获取执行结果
在浏览器中有两种方式获取结果,一是通过接口请求结果,另一种是可以直接下载结果文件。
1 通过接口请求结果
http://120.79.247.23/f12Browser/http?cmd=getAFileContent&username=test&password=123456&commandID=19
正确的结果形式:
<status>success</status><fileContent>URL对应的HTML源码</fileContent>
若发生异常:
<status>error</status><msg>异常信息</msg>
2 直接下载结果文件
http://120.79.247.23/f12Browser/http?cmd=downloadAFile&username=test&password=123456&commandID=19
二、以java为例
这里需要用到webdriver3.7的环境
https://share.weiyun.com/5DCfA1a
(一)提交一个指令
public static void main(String[] args) {
try{
//1 提交指令
String requestCommandURL = "http://120.79.247.23/f12Browser/http?cmd=requestACommand";
DefaultHttpClient client = new DefaultHttpClient();
HttpPost httpPost=new HttpPost(requestCommandURL);
List<BasicNameValuePair> params=new ArrayList<BasicNameValuePair>();
params.add(new BasicNameValuePair("username", "test"));
params.add(new BasicNameValuePair("password", "123456"));
params.add(new BasicNameValuePair("targetURL", "http://www.baidu.com"));
params.add(new BasicNameValuePair("commandVersion", "local_and_server"));
params.add(new BasicNameValuePair("commandAction", "none"));
httpPost.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));
HttpResponse response = client.execute(httpPost);
HttpEntity entity = response.getEntity();
if(entity==null){
System.out.println("error entity==null");
client.close();
return;
}
String results = EntityUtils.toString(entity, "UTF-8");
System.out.println("results="+results);
client.close();
return;
}catch(Exception e){
e.printStackTrace();
return;
}
}
正确执行的话应该能得到如下结果:
<status>success</status><commandID>19</commandID>
若status不为success,则返回格式为
<status>error</status><msg>异常信息</msg>
(二)查询执行情况
public static void main(String[] args) {
try{
//2 查询指令执行状态
String requestCommandURL = "http://120.79.247.23/f12Browser/http?cmd=quaryACommand";
DefaultHttpClient client = new DefaultHttpClient();
HttpPost httpPost=new HttpPost(requestCommandURL);
List<BasicNameValuePair> params=new ArrayList<BasicNameValuePair>();
params.add(new BasicNameValuePair("username", "test"));
params.add(new BasicNameValuePair("password", "123456"));
params.add(new BasicNameValuePair("commandID", "19"));
httpPost.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));
HttpResponse response = client.execute(httpPost);
HttpEntity entity = response.getEntity();
if(entity==null){
System.out.println("error entity==null");
client.close();
return;
}
String results = EntityUtils.toString(entity, "UTF-8");
System.out.println("results="+results);
client.close();
return;
}catch(Exception e){
e.printStackTrace();
return;
}
//3 获取执行结果
}
正确执行的话应该能得到如下结果:
<status>success</status>
<commandID>19</commandID>
<commandVersion>local_and_server</commandVersion>
<targetURL>http://www.baidu.com</targetURL>
<commandAction>none<commandAction/>
<commandStatus>finished</commandStatus>
<createrID>1</createrID>
<createTime>2018-06-11 14:25:10.0</createTime>
<updateTime>2018-06-11 14:25:25.0</updateTime>
若指令还未开始还行,则commandStatus=create,未执行完成,则commandStatus=assigned
若查询过程中出现异常,返回格式为:
<status>error</status><msg>异常信息</msg>
(三)获取执行结果
public static void main(String[] args) {
try{
//3 获取执行结果
String requestCommandURL = "http://120.79.247.23/f12Browser/http?cmd=getAFileContent";
DefaultHttpClient client = new DefaultHttpClient();
HttpPost httpPost=new HttpPost(requestCommandURL);
List<BasicNameValuePair> params=new ArrayList<BasicNameValuePair>();
params.add(new BasicNameValuePair("username", "test"));
params.add(new BasicNameValuePair("password", "123456"));
params.add(new BasicNameValuePair("commandID", "19"));
httpPost.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));
HttpResponse response = client.execute(httpPost);
HttpEntity entity = response.getEntity();
if(entity==null){
System.out.println("error entity==null");
client.close();
return;
}
String results = EntityUtils.toString(entity, "UTF-8");
System.out.println("results="+results);
client.close();
return;
}catch(Exception e){
e.printStackTrace();
return;
}
}
正确的结果形式:
<status>success</status><fileContent>URL对应的HTML源码</fileContent>
若发生异常:
<status>error</status><msg>异常信息</msg>
三、以python为例
(一)提交一个指令
#!/usr/bin/python
import urllib.request
import urllib.parse post_data = urllib.parse.urlencode({
'cmd':'requestACommand',
'targetURL':'http://www.baidu.com',
'username':'test',
'password':'',
'commandVersion':'local_and_server',
'commandAction':'none'
}).encode('utf-8')
requrl = "http://120.79.247.23/f12Browser/http"
req = urllib.request.Request(url = requrl, data = post_data)
print(urllib.request.urlopen(req).read().decode('utf-8'))
正确执行的话应该能得到如下结果:
<status>success</status><commandID>19</commandID>
若status不为success,则返回格式为
<status>error</status><msg>异常信息</msg>
(二)查询执行情况
#!/usr/bin/python
import urllib.request
import urllib.parse post_data = urllib.parse.urlencode({
'cmd':'quaryACommand',
'username':'test',
'password':'',
'commandID':''
}).encode('utf-8')
requrl = "http://120.79.247.23/f12Browser/http"
req = urllib.request.Request(url = requrl, data = post_data)
print(urllib.request.urlopen(req).read().decode('utf-8'))
正确执行的话应该能得到如下结果:
<status>success</status>
<commandID>19</commandID>
<commandVersion>local_and_server</commandVersion>
<targetURL>http://www.baidu.com</targetURL>
<commandAction>none<commandAction/>
<commandStatus>finished</commandStatus>
<createrID>1</createrID>
<createTime>2018-06-11 14:25:10.0</createTime>
<updateTime>2018-06-11 14:25:25.0</updateTime>
若指令还未开始还行,则commandStatus=create,未执行完成,则commandStatus=assigned
若查询过程中出现异常,返回格式为:
<status>error</status><msg>异常信息</msg>
(三)获取执行结果
#!/usr/bin/python
import urllib.request
import urllib.parse post_data = urllib.parse.urlencode({
'cmd':'getAFileContent',
'username':'test',
'password':'',
'commandID':''
}).encode('utf-8')
requrl = "http://120.79.247.23/f12Browser/http"
req = urllib.request.Request(url = requrl, data = post_data)
print(urllib.request.urlopen(req).read().decode('utf-8'))
正确的结果形式:
<status>success</status><fileContent>URL对应的HTML源码</fileContent>
若发生异常:
<status>error</status><msg>异常信息</msg>
如何通过http接口使用f12b实现批量提交链接的更多相关文章
- js 批量提交数据
// 批量提交数据 let pageSize = 100, total = dataTmp.length, list = dataTmp let totalPage = Math.ceil(total ...
- MyBatis 通过 BATCH 批量提交
本文由 简悦 SimpRead 转码, 原文地址 https://www.jb51.net/article/153382.htm 很多人在用 MyBatis 或者 通用 Mapper 时,经常会问有没 ...
- php中bindValue的批量提交sql语句
php预编译sql语句,可以批量提交sql,也可以实现防注入 <?php $dsn='mysql:host=127.0.0.1;port=3306;dbname=bisai'; $usernam ...
- git批量删除文件和批量提交
1. 单个删除文件: ① 通常直接在文件管理器中把没用的文件删了,或者用rm命令删了:(可选操作,可直接执行②删除) $ rm test.txt ② 确实要从版本库中删除该文件,那就用命令git rm ...
- Asp.Net Mvc表单提交(批量提交)
Asp.Net Mvc中Action的参数可以自动接收和反序列化form表单的值, 采用form表单提交 name=value类型,只要Action参数的变量名和input的name相同就行 html ...
- SQL批量提交修改业务
把你需要批量提交修改的东西在内存中修改完毕 然后执行以下代码 SqlConnection conn = new SqlConnection(ConnectionString);SqlDataAdapt ...
- Ext.Ajax.request批量提交表单
介绍一下批量提交grid中数据的问题 js文件中的提交方法如下: listeners: { click: function btnClick(button) { var win = button.up ...
- TopJUI通过简单的代码实现复杂的批量提交功能
业务系统的批量提交是常用的操作功能,使用传统的EasyUI开发时需要写不少代码才能实现,该功能在TopJUI中是如何实现的呢?本篇我们将通过简单的代码,把批量操作的具体实现分享给大家参考. <a ...
- 【INSERT】逐行提交、批量提交及极限提速方法
在Oracle数据库中,不是提交越频繁越好.恰恰相反,批量提交可以得到更好的性能.这篇文章给大家简单展示一下在Oracle数据库中逐行提交于批量提交两者之间的性能差别.最后再给出一种可以极大改变性能的 ...
随机推荐
- 访问 JavaBean 对象的属性
在 <jsp:useBean> 标签主体中使用 <jsp:getProperty/> 标签来调用 getter 方法,使用 <jsp:setProperty/> 标 ...
- Hibernate使用xml文件的每个类层次一张表
通过这种继承策略,我们可以通过单表映射整个层次结构. 这里,在表中创建一个额外的列(也称为discriminator列)来标识该类. 让我们先了解问题.下面给出的整个层次类映射到数据库的一个表中图解说 ...
- Memcached 常见的问题
memcached是怎么工作的? Memcached的奇妙来自两阶段哈希(two-stage hash).Memcached就像一个巨大的.存储了非常多<key,value>对的哈希表. ...
- poj 2516(拆点+最小权匹配)
题目链接:http://poj.org/problem?id=2516 思路:考虑某种货物,由于某个订货商可能接受来自不同地区的货物,而某一地区的货物也可能送给不同的订货商,显然不能直接进行匹配,必须 ...
- C++11写算法之二分查找
同样的,二分查找很好理解,不多做解释,要注意二分查找的list必须是排好序的. 这里实现了两种二分查找的算法,一种递归一种非递归,看看代码应该差不多是秒懂.想试验两种算法,改变一下findFunc函数 ...
- 创建新的C++工程来调用Caffe对图片进行识别
前段时间一直在跑Caffe训练数据.之前用训练好的caffemodel对图片进行分类都是用的命令行指令,于是就想着自己新建一个工程来调用caffe,结合classification的代码来对图片进行分 ...
- python学习【第五篇】python函数 (二)
一.装饰器 装饰器:本质就是函数,功能是为其它函数添加附加功能 装饰器的原则: 不修改被修饰函数的源代码 不修改被修饰函数的调用方式 装饰器的知识储备: 装饰器 = 高阶函数 + 函数嵌套 + 闭包 ...
- 巨蟒python全栈开发django9:一些知识点的汇总
回顾上周内容: 题目: 1.人民出版社出版过的所有书籍的名字以及作者的姓名(三种写法,笔记中有两种写法) 2.手机以2开头的作者出版过的所有书籍名称以及出版社名称(三种写法,笔记中有1种写法) 1.聚 ...
- 九度OJ 1357:疯狂地Jobdu序列 (数字特性)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:715 解决:263 题目描述: 阳仔作为OJ的数据管理员,每一周的题目录入都让其很抓狂,因为题目不是他出的,他控制不了出题的速度--在等题目 ...
- python函数回顾:getattr()
描述 getattr() 函数用于返回一个对象属性值. 语法 getattr 语法: getattr(object, name[, default]) 参数 object -- 对象. name -- ...