转一下类型就可以了,python2 和 python3 的字符串不太一样
你们接口不是接收 json 格式,而是 json 字符串,那你的后面"这些要转义的,
detail 加引号,大括号数量不匹配
可以获取 page_source,然后根据 page_source 去分析使用什么定位方式,只是没那么直观了
RSA 本来就加密不了长度太长的内容,可以加密的长度上限有个计算公式,可以看一下,另外 padding 方式也会影响加密长度,可以参考下别人的回答
https://github.com/digitalbazaar/forge/issues/398
主要是每写一个用例都要手动执行一次操作,我想一次性把所有操作走完,然后专心写用例了,不用来回切换,感觉会方便很多
命令行看下which java
,到底是不是你用的 JDK,不是的话重新配置下,或者把错误的 JDK 删掉
JDK 配置错了,重新配置下 JDK,网上很多教程的
我理解 app 要支持从这个 activity 启动才可以
忙的连轴转,不看电视剧,不玩游戏,时间都去哪了
鼠标中键
postman 请求下,对比代码的,key 不见了没遇到过
怎么自动过滤掉?如果字段有,值是 null 的话并不会被过滤啊,你把你的详细信息发下
看起来很不错啊,期待后续分享
很好,有时间试用下
可以看下日志啊,具体定位不到的原因;或者手动在远程服务器上跑一下看看效果是否有问题
找下这个元素的父元素看看呢,可能父元素可以响应
没道理这样啊,你的浏览器和 fiddler 应该在同一个网络环境,还是说你的浏览器有特殊的网络设置?可以把你的网络设置运用到整个系统抓包,或者设置 fiddler 的代理,或者把这个 js 文件下到本地,然后用 fiddler 拦截直接返回
是抓包 pc 网页么,你的意思是网页直接打开可以加载,开启 fiddler 就不能加载了么?
这命令就是重命名,windows 的 shell 没这个命令,你手动改下呗
是不是 cookie 那里安全
选中了,http 把这个去掉
找到问题了,是新版 postman 不一定按照语句的顺序来执行,导致forgeJS
变量还没有设置的时候就去使用导致报错,修改了一下脚本,这个应该没问题了,复制进去之后先执行一次,第二次在 console 就能看到加解密结果了
//download forgeJS from web and set varible
if (!pm.globals.has("forgeJS")) {
pm.sendRequest("http://10.52.16.143/logs/forge.js", function (err, res) {
if (err) {
console.log(err);
} else {
pm.globals.set("forgeJS", res.text());
}
})
} else {
eval(pm.globals.get("forgeJS"))
const public_key = '-----BEGIN PUBLIC KEY-----\n' +
'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDORoOSW2gbHl6s/YmS1jWxb954\n' +
'X/jflZ2dK65oM/Bxii2Iba80IiC9+Sa1phmOVDAk+IVDsPNZ+YJ2Qg0hPmoLSLxe\n' +
'f2A6ySJPl5su8TaGOuVZg1SRyk55bjHymQUnxryD/ml1EmBUaGcrs9FCiVBy38kg\n' +
'eZNbCexucVQxn6OYlwIDAQAB\n' +
'-----END PUBLIC KEY-----'
const private_key = '-----BEGIN PRIVATE KEY-----\n' +
'MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAM5Gg5JbaBseXqz9\n' +
'iZLWNbFv3nhf+N+VnZ0rrmgz8HGKLYhtrzQiIL35JrWmGY5UMCT4hUOw81n5gnZC\n' +
'DSE+agtIvF5/YDrJIk+Xmy7xNoY65VmDVJHKTnluMfKZBSfGvIP+aXUSYFRoZyuz\n' +
'0UKJUHLfySB5k1sJ7G5xVDGfo5iXAgMBAAECgYEAk6KQZN4bQt2XsYS9RGUghOCm\n' +
'f81g2NXCu00aROZ3vyvArxaiAVQzzwRWGkjJnb7PvoZJC0vIwKr+HxnjP9nmFufd\n' +
'+0EnBT+imYSzrfZhfGGwyI6EIyy/XcoW5lf0xltx3w9mJicnR9kMzNtZ5mNGPMNn\n' +
'CgAgjvZqnWYb+f6tb/ECQQD0tdpg8ts3puXclPe51my+LbKhEbyFSMzvtMTDCRmO\n' +
'd0jrmZhQomsZacC8+l+2l6WTj5vrhVQlAVUeUJ7kldQNAkEA18q53wor6a4Cv0OL\n' +
'xFzBWXRCMVFfyCWAFQUpTSGrIM/X4Lx30IZCShtvkdh1ky39b9T6lpOjES7MK4Dh\n' +
'xttCMwJAUGBi6DEcm/zvxzIO5DVv5k9wOsNunoC4/4rqjf0xLcA0bV43z1RpxSEd\n' +
'M3UxdvH8aqli10slxjnX0Ws9pWspCQJBALqSncgYzETbXaauqO5a4BUOrphjafPr\n' +
'cGU8NCxrGsFg0p6NdO5G1pOqSvmHdIiPL9t8AjkkZs3Zb0+BvDOpqP8CQQDZhfh4\n' +
'/c/Qzp4szj7+GXTZ1cmGwAuFo2/9uiumUAS3f19EpgoV9u9eyJ4gZPEBDvAjO961\n' +
'kAjdja4DAy4SbCXy\n' +
'-----END PRIVATE KEY-----'
//encrypt text "plaintext"
var publicKey = forge.pki.publicKeyFromPem(public_key);
var encryptedText = forge.util.encode64(publicKey.encrypt("plaintext", 'RSA-OAEP', {
md: forge.md.sha1.create(),
mgf1: {
md: forge.md.sha1.create()
}
}));
console.log("encrypted text:" + encryptedText);
// decrypt text
var privateKey = forge.pki.privateKeyFromPem(private_key);
var decryptedText = privateKey.decrypt(forge.util.decode64(encryptedText), 'RSA-OAEP', {
md: forge.md.sha1.create(),
mgf1: {
md: forge.md.sha1.create()
}
});
console.log("dectypted text:" + decryptedText);
}
相当于是从网上下载了一个 js,然后 eval 注入到环境里面,所以如果要成功,要能够下载这个 js 文件,下载之后会自动把 js 的值设置到 postman 的变量里面去
if(!pm.globals.has("forgeJS")){
pm.sendRequest("https://raw.githubusercontent.com/loveiset/RSAForPostman/master/forge.js", function (err, res) {
if (err) {
console.log(err);}
else {
pm.globals.set("forgeJS", res.text());}
})}
如果实在不行,建议手动下载这个 js,然后自建一个 http 服务器,把这个文件放上去,链接改为自己的。(如果是 windows 可以使用 hfs,一个很小的文件,运行就可以了)
webview = driver.contexts[1]
driver.switch_to.context(webview)
# ...
driver.switch_to.context('NATIVE_APP')