很久没出来活跃了,来骗点精币
思路:德邦登录获取cookie 利用cookie提交获取表单。
首先说下难点,难住我的是登录这步,发现POST登录的加密自己解决不掉哈哈,而后选择了后台填表。
其次的话基本没啥大问题,跟着思路写就可以。
填表登录有个问题,因为是后台没什么特征登录成功,所以执行之后通过返回的cookie尝试获取表单,这里会有返回提示未登录或者其他错误。
限制一百条订单主要是速度问题,太多了太慢了。测试获取的参数貌似并没有限制,500也能获取-提交 ' {"pageIndex":1,"pageSize":"50",(获取表单数量)"ordersort":0,"startTime":"2021-02-22 00:00:00","endTime":"2021-02-23 23:59:59"}
获取数据的:
变量名 | 类 型 | 静态 | 数组 | 备 注 | 局_网址 | 文本型 | | | 局_方式 | 整数型 | | | 局_提交数据 | 文本型 | | | 局_提交cookie | 文本型 | | | ADD_协议头 | 类_POST数据类 | | | 局_提交协议头 | 文本型 | | | 局_结果 | 字节集 | | | 局_返回 | 文本型 | | | 数据量 | 整数型 | | | N | 整数型 | | |
按钮_查询.标题 = “查询中”按钮_查询.禁止 = 真 超级列表框1. 全部删除 () 局_网址 = “https://www.deppon.com/gwapi/orderService/eco/order/secure/orderList”局_方式 = 1 局_提交数据 = “{” + #引号 + “pageIndex” + #引号 + “:1,” + #引号 + “pageSize” + #引号 + “:” + #引号 + “100” + #引号 + “,” + #引号 + “ordersort” + #引号 + “:0,” + #引号 + “startTime” + #引号 + “:” + #引号 + startime + #引号 + “,” + #引号 + “endTime” + #引号 + “:” + #引号 + endtime + #引号 + “}”局_提交cookie = COOKIE ADD_协议头. 添加 (“accept”, “application/json, text/plain, */*”, )ADD_协议头. 添加 (“user-agent”, “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36 SE 2.X MetaSr 1.0”, )ADD_协议头. 添加 (“origin”, “https://www.deppon.com”, )ADD_协议头. 添加 (“authority”, “www.deppon.com”, )ADD_协议头. 添加 (“method”, “POST”, )ADD_协议头. 添加 (“path”, “/gwapi/orderService/eco/order/secure/orderList”, )ADD_协议头. 添加 (“scheme”, “https”, )ADD_协议头. 添加 (“accept”, “application/json, text/plain, */*”, )ADD_协议头. 添加 (“accept-encoding”, “gzip, deflate, br”, )ADD_协议头. 添加 (“accept-language”, “zh-CN,zh;q=0.9”, )ADD_协议头. 添加 (“authorization”, “ignore”, )ADD_协议头. 添加 (“content-length”, “111”, )ADD_协议头. 添加 (“content-type”, “application/json”, )局_提交协议头 = ADD_协议头. 获取协议头数据 ()局_结果 = 网页_访问_对象 (局_网址, 局_方式, 局_提交数据, 局_提交cookie, , 局_提交协议头, , , , , , , , , , , , , )局_结果 = 网页_GZIP解压 (局_结果 )局_返回 = 编码_URL解码 (到文本 (局_结果 ), 真)json. 解析 (局_返回, )数据量 = 到整数 (json. 取属性 (“result.totalRows”). 取数据文本 ()) 如果真 (数据量 < 1 )信息框 (“未查到订单信息”, 0, “提示”, )按钮_查询.禁止 = 假 按钮_查询.标题 = “查询”返回 ()计次循环首 (数据量, N )如果真 (json. 取通用属性 (“result.queryOrderList[” + 到文本 (N - 1 ) + “].orderTime”, ) = “”)跳出循环 ()超级列表框1. 插入表项 (N - 1, json. 取通用属性 (“result.queryOrderList[” + 到文本 (N - 1 ) + “].orderTime”, ), , , , )超级列表框1. 置标题 (N - 1, 1, json. 取通用属性 (“result.queryOrderList[” + 到文本 (N - 1 ) + “].waybillNumber”, )) 超级列表框1. 置标题 (N - 1, 2, json. 取通用属性 (“result.queryOrderList[” + 到文本 (N - 1 ) + “].receiveName”, )) 超级列表框1. 置标题 (N - 1, 3, json. 取通用属性 (“result.queryOrderList[” + 到文本 (N - 1 ) + “].contactCity”, )) 超级列表框1. 置标题 (N - 1, 4, json. 取通用属性 (“result.queryOrderList[” + 到文本 (N - 1 ) + “].receiverCustCity”, )) 处理事件 ()计次循环尾 ()
填表的
.版本 2
.支持库 wke
.支持库 EThread
.子程序 填表_开始
.局部变量 Webview, 整数型
窗口_德邦.按钮_校验.标题 = “自动登录中”
Webview = 浏览器1.取WebView ()
填表.文档_进入编辑模式 (Webview, 真)
延时 (1000)
填表.元素置焦点 (Webview, #填表模式_JS表达式, “#userName”, 0)
延时 (1000)
置剪辑板文本 (“号码”)
窗口_德邦.按钮_校验.标题 = “登录账号:” + 账号
填表.文档_粘贴 (Webview)
延时 (1000)
填表.元素置焦点 (Webview, #填表模式_JS表达式, “#password”, 0)
延时 (1000)
置剪辑板文本 (“密码”)
填表.文档_粘贴 (Webview)
延时 (1000)
填表.元素点击 (Webview, #填表模式_JS表达式, “#loginBtn”, 0)
延时 (1000)
窗口_德邦.按钮_校验.标题 = “获取cookie”
COOKIE = 浏览器1.获取Cookie ()
启动线程 (&获取数据检验, , )
还有校验是否登录成功
.版本 2
.支持库 wke
.子程序 获取数据检验, , , 本命令由【精易网页调试助手】生成,请配合精易模块使用。
.局部变量 局_网址, 文本型
.局部变量 局_方式, 整数型
.局部变量 局_提交数据, 文本型
.局部变量 局_提交cookie, 文本型
.局部变量 ADD_协议头, 类_POST数据类
.局部变量 局_提交协议头, 文本型
.局部变量 局_结果, 字节集
.局部变量 局_返回, 文本型
' https://www.deppon.com/gwapi/orderService/eco/order/secure/orderList
局_网址 = “https://www.deppon.com/gwapi/orderService/eco/order/secure/orderList”
局_方式 = 1
' {"pageIndex":1,"pageSize":"50","ordersort":0,"startTime":"2021-02-22 00:00:00","endTime":"2021-02-23 23:59:59"}
局_提交数据 = “{” + #引号 + “pageIndex” + #引号 + “:1,” + #引号 + “pageSize” + #引号 + “:” + #引号 + “20” + #引号 + “,” + #引号 + “ordersort” + #引号 + “:0,” + #引号 + “startTime” + #引号 + “:” + #引号 + “2021-02-22 00:00:00” + #引号 + “,” + #引号 + “endTime” + #引号 + “:” + #引号 + “2021-02-23 23:59:59” + #引号 + “}”
局_提交cookie = COOKIE
ADD_协议头.添加 (“accept”, “application/json, text/plain, */*”, )
ADD_协议头.添加 (“user-agent”, “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36 SE 2.X MetaSr 1.0”, )
ADD_协议头.添加 (“origin”, “https://www.deppon.com”, )
ADD_协议头.添加 (“authority”, “www.deppon.com”, )
ADD_协议头.添加 (“method”, “POST”, )
ADD_协议头.添加 (“path”, “/gwapi/orderService/eco/order/secure/orderList”, )
ADD_协议头.添加 (“scheme”, “https”, )
ADD_协议头.添加 (“accept”, “application/json, text/plain, */*”, )
ADD_协议头.添加 (“accept-encoding”, “gzip, deflate, br”, )
ADD_协议头.添加 (“accept-language”, “zh-CN,zh;q=0.9”, )
ADD_协议头.添加 (“authorization”, “ignore”, )
ADD_协议头.添加 (“content-length”, “111”, )
ADD_协议头.添加 (“content-type”, “application/json”, )
局_提交协议头 = ADD_协议头.获取协议头数据 ()
局_结果 = 网页_访问_对象 (局_网址, 局_方式, 局_提交数据, 局_提交cookie, , 局_提交协议头, , , , , , , , , , , , , )
局_结果 = 网页_GZIP解压 (局_结果)
局_返回 = 编码_URL解码 (到文本 (局_结果), 真)
json.解析 (局_返回, )
.如果真 (文本_寻找文本 (局_返回, “message”, 0, 真) = -1)
信息框 (“登录失败,请重试”, 0, “erro”, )
窗口_德邦.按钮_校验.禁止 = 假
窗口_德邦.按钮_校验.标题 = “重试登录”
返回 ()
.如果真结束
.如果 (json.取通用属性 (“message”, ) ≠ “未登录”)
写配置项 (德邦配置目录, “德邦”, “cookie”, COOKIE)
按钮_查询.禁止 = 假
按钮_校验.禁止 = 真
按钮_校验.标题 = “已登录用户:” + 账号
窗口3.销毁 ()
.否则
按钮_查询.禁止 = 真
按钮_校验.禁止 = 假
信息框 (json.取通用属性 (“message”, ), 0, “erro”, 窗口_德邦)
.如果结束
' 返回数据被Gzip压缩,调用命令[网页_Gzip解压]需要[Gzip.dll]文件, 将助手根目录下[\gzip.dll]放到源码的根目录才能正常返回数据
.子程序 _按钮_校验_被单击
.如果 (窗口_是否存在 (“德邦自动登录”) ≠ 0)
按钮_校验.禁止 = 真
按钮_校验.标题 = “登录中”
窗口3.浏览器1.重新载入 ()
延时 (1000)
线程_开始 ()
.否则
载入 (窗口3, , 假)
按钮_校验.禁止 = 真
按钮_校验.标题 = “登录中”
延时 (1000)
线程_开始 ()
为什么不直接上源码,,,,这是一个公司找我定制在另一款软件内的。所以拆出来也用不了。大家学习吧,思路其实很简单的。另外有谁能解决POST登录加密可以评论区指教。我也是个玩易语言没多久的菜鸟。
|