如何制作chrome与360游览器插件 主要功能是填充表单与提交

反转皇潮 2018-07-31 10:46:42
大家好,我简单说明下我的情况
需求:客户网站有一些信息,经常需要到另外一个网站里面录入,因为没有接口对接,要录入的信息比较多,所以希望有什么简单点的办法能完成

我自己这边想的是弄个插件,客户网站把要填写的信息弄成个字符串,插件里面价格框,让他复制到里面去,点击按钮,我就去解析把这些信息放到指定网站表单里面去

我之前没有做过插件这一块,我是做.net的 自己查了一天资料看了看 发现可以用html和js来写 不过还是有很多具体的东西不懂 所以来请教下各位 ,我现在就知道 要几个东西组成 manifest.json (这个参数只知道设置几个),popup.html (点击插件的页面),background.js (后台js就完全不懂了),content-script.js (这个可以操作页面dom)

所遇问题:
1.插件怎么设置那些页面才能使用或者是那些站点,manifest.json要怎么设置
2.content-script.js 去找对应的input或者是其他的html 能不能做到使用原页面上面的方法 因为表单里面有的是有一些事件的

目前想到的就这两个 看看那个大神能教我下
...全文
415 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
讨厌走开啦 2018-08-20
  • 打赏
  • 举报
回复
跨域请求不支持设置请求头,这是浏览器的限制,所以你在工具里都没问题,一旦在线上的页面就会出错,这个是浏览器的安全限制,不能解决。
反转皇潮 2018-08-20
  • 打赏
  • 举报
回复
反转皇潮 2018-08-20
  • 打赏
  • 举报
回复
返回的是:远程服务器返回错误: (500) 内部服务器错误 请检查异常
反转皇潮 2018-08-20
  • 打赏
  • 举报
回复
补充一下: 我希望操作的网站啊 这些接口有的是ajax有的是from提交的 是不是和这些有影响 我现在失败的接口是from提交的 ajax的我这样写成功了
反转皇潮 2018-08-20
  • 打赏
  • 举报
回复
我现在使用其他办法去解决
但是有遇到了新问题,

代码:
string strURL = "http://yct.sh.gov.cn/bizhallnz_yctnew/apply/member/ajax_save_member";
var param = "investorList=&etpsMember.appNo=1500000120180802A120&memberId=&etpsMember.personName=张飞&etpsMember.cetfTypeGb=1&etpsMember.cetfType=&etpsMember.cetfId=362429199409240931&etpsMember.sexId=1&etpsMember.birthdate=1994-09-24&etpsMember.nationalityId=156&etpsMember.provinceId=500222&provId=500000&cityId=500200&districtId=500222&etpsMember.nationId=01&etpsMember.hdshGb=432K&etpsMember.hdshId=&etpsMember.accreditName=";
System.Net.HttpWebRequest request;
request = (System.Net.HttpWebRequest)WebRequest.Create(strURL);
request.Method = "POST";
var JSESSIONID = "rBtPJQBQW3pNFjOsZb27xEUbnlbBBM8ot8wA";
var BIGipServerGSJ_YCT = "625941420.20480.0000";
var BIGipServerGSJ_INT = "172954028.20480.0000";

SetHeaderValue(request.Headers, "Host", "yct.sh.gov.cn");
SetHeaderValue(request.Headers, "Connection", "keep-alive");
SetHeaderValue(request.Headers, "Content-Length", "429");
SetHeaderValue(request.Headers, "Accept", "text/plain, */*; q=0.01");
SetHeaderValue(request.Headers, "Origin", "http://yct.sh.gov.cn");
SetHeaderValue(request.Headers, "X-Requested-With", "XMLHttpRequest");
SetHeaderValue(request.Headers, "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36");
//SetHeaderValue(request.Headers, "Content-Type", "application/x-www-form-urlencoded");
SetHeaderValue(request.Headers, "Content-Type", "text/xml");
SetHeaderValue(request.Headers, "Referer", "http://yct.sh.gov.cn/bizhallnz_yctnew/apply/member/to_member_info?memberType=1&appNo=1500000120180802A120&id=&declarePaper=00&style=blue&isneedwpdb=false");
SetHeaderValue(request.Headers, "Accept-Encoding", "gzip, deflate");
SetHeaderValue(request.Headers, "Accept-Language", "zh-CN,zh;q=0.8");
SetHeaderValue(request.Headers, "Cookie", "JSESSIONID=" + JSESSIONID + "; BIGipServerGSJ-YCT-pool1=" + BIGipServerGSJ_YCT + "; BIGipServerGSJ-INT-YCT-WEB=" + BIGipServerGSJ_INT);

request.ContentType = "application/json;charset=UTF-8";
string paraUrlCoded = param;
byte[] payload;
payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
request.ContentLength = payload.Length;
Stream writer = request.GetRequestStream();
writer.Write(payload, 0, payload.Length);
writer.Close();
System.Net.HttpWebResponse response;
response = (System.Net.HttpWebResponse)request.GetResponse();
System.IO.Stream s;
s = response.GetResponseStream();
string StrDate = "";
string strValue = "";
StreamReader Reader = new StreamReader(s, Encoding.UTF8);
while ((StrDate = Reader.ReadLine()) != null)
{
strValue += StrDate + "\r\n";
}

我用后台去请求接口 有的接口这样写是可以成功的 但是有的却不行,信息我对比了多次 都是一样的
去工具里面测试提交 或者 在线post提交网站测试 都可以 这就横尴尬了 这样要咋解决呀
我是.net的
反转皇潮 2018-08-17
  • 打赏
  • 举报
回复
大神们 我这里遇到了个新问题 希望大家能够解答一下

我现在想通过插件发送一个post请求 但是出现了“Refused to set unsafe header”这个问题


我的代码是
$.ajax({
async: true,
type: "POST",
url: 'http://yct.sh.gov.cn/bizhallnz_yctnew/apply/investor/ajax/save',
data: { "id": "-242491", "appNo": "1500000120180802A120", "entityTypeId": "0101", "cptl": "141.0000", "actlInvt": "141", "deadlineDate": "2018-8-16", "invtTypeGb": "1|2|3|6|7", "invtRatio": "51.84", "economicNature": "431", "entityTypeGb": "20", "provinceId": "500223", "address": "重庆", "personInvtSet": [{ "personName": "王五", "sexId": "1", "cetfTypeGb": "1", "cetfType": "", "cetfId": "362429199409240931", "entityTypeGb": "20", "nationalityId": "156", "nationId": "01" }], "invtInfoSet": [{ "id": "-242627", "invtTypeGb": "1", "invtTypeId": "01", "crncyId": "002", "cptl": "101.0000" }, { "id": "-242626", "invtTypeGb": "2", "invtTypeId": "02", "crncyId": "002", "cptl": "10.0000" }, { "id": "-242625", "invtTypeGb": "3", "invtTypeId": "03", "crncyId": "002", "cptl": "10.0000" }, { "id": "-242624", "invtTypeGb": "6", "invtTypeId": "05", "crncyId": "002", "cptl": "10.0000" }, { "id": "-242623", "invtTypeGb": "7", "invtTypeId": "30", "crncyId": "002", "cptl": "10.0000" }], "invtPlanSet": [] },
dataType: "json",
beforeSend: function (request) {
request.setRequestHeader("Host", "yct.sh.gov.cn");
request.setRequestHeader("Connection", "keep-alive");
request.setRequestHeader("Content-Length", "892");
request.setRequestHeader("Accept", "text/plain, */*; q=0.01");
request.setRequestHeader("Origin", "http://yct.sh.gov.cn");
request.setRequestHeader("X-Requested-With", "XMLHttpRequest");
request.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36");
request.setRequestHeader("Content-Type", "application/json");
request.setRequestHeader("Referer", "http://yct.sh.gov.cn/bizhallnz_yctnew/apply/investor/edit?appNo=1500000120180802A120&entityTypeId=0101&id=-242491&etpsTypeGb=1151&style=blue&isAllowModify=yes&isAdd=undefined");
request.setRequestHeader("Accept-Encoding", "gzip, deflate");
request.setRequestHeader("Accept-Language", "zh-CN,zh;q=0.8");
request.setRequestHeader("Cookie", "JSESSIONID=" + JSESSIONID + "; BIGipServerGSJ-YCT-pool1=" + BIGipServerGSJ_YCT + "; BIGipServerGSJ-INT-YCT-WEB=" + BIGipServerGSJ_INT);
},
success: function (data) {
alert('成功');
},
error: function (e) {
alert('失败');
}
});


我用这些信息到fiddle 里面测试 还是到别的在线post提交网站测试 都是可以成功的

我这个ajax是写在插件里面的 我觉得和这个好像没关系
我查资料上面说安全协议影响的 我也不知道怎么解决



漠子凉 2018-08-04
  • 打赏
  • 举报
回复
这些文档上面都有的,特别留意那个content.js
反转皇潮 2018-08-03
  • 打赏
  • 举报
回复
请问怎么触发页面上面的表单提交和onclick
反转皇潮 2018-08-01
  • 打赏
  • 举报
回复

引用 5 楼 sinat_34353062 的回复:
http://open.chrome.360.cn/extension_dev/overview.html
拿去用不谢

这个我看到过了
请问怎么才能做到调用页面上的function方法 这个问题 我好想没有看到
能帮忙指点下吗
漠子凉 2018-08-01
  • 打赏
  • 举报
回复
http://open.chrome.360.cn/extension_dev/overview.html
拿去用不谢
反转皇潮 2018-08-01
  • 打赏
  • 举报
回复
大神快出现
weixin_42559044 2018-08-01
  • 打赏
  • 举报
回复
请问怎么才能做到调用页面上的function方法 学习了
反转皇潮 2018-07-31
  • 打赏
  • 举报
回复
反转皇潮 2018-07-31
  • 打赏
  • 举报
回复
请问怎么才能做到调用页面上的function方法

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧