明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 12521|回复: 24

[【不死猫】] [原创]基于网络的Lisp代码封装加密(自动生成远程页面)(完整Lisp源码+网页源码)

[复制链接]
发表于 2013-7-30 02:24:51 | 显示全部楼层 |阅读模式
本帖最后由 不死猫 于 2013-7-30 23:05 编辑

首先确保你的电脑能访问明经通道论坛.

通过本地Lisp代码访问远程页面实现数学运算表达式的隐藏封装(重点是思路)
服务器会自动生成代码封装页面.
本地Lisp生成的Lisp函数包含远程访问代码.
每个远程页面访问代码几乎相同,但能够返回你自己定义的数学运算表达式的结果!


测试方法:

加载WebCal.lsp之后 执行tt命令

其中
测试页码提供999个,大家尽量选用不容易用到的页码为好.
计算表达式中使用x作为变量
最终要封装的函数类似于
(defun mycal (x)
  (/ (+ x 5) 2)
)
那么表达式就写 (x + 5) / 2 就行了

大家在测试的时候可能会发生同时访问相同页面的情况,因此加入了验证码(验证码为5位任意数字),如果同时访问,则会提示错误.此时换个其他的页码测试即可.

生成的函数加载后 用 (MyCal 一个数字)进行测试
测试结果与表达式返回结果相同,实现隐藏数学表达式的目的.
此为测试版,尽量用简单的数学表达式吧.



网络Asp源码



lisp程序源码



自动生成的代码
  1. (defun MyCal(x)
  2.   (setq Page 33)  
  3.   (setq x (rtos x 2 6))
  4.   (while (/= x (setq x (vl-string-subst  "!" "." x))))
  5.   (setq ie (Vlax-Create-Object "InternetExplorer.Application" ))
  6.   (Vlax-Invoke ie 'Navigate (strcat "http://nonsmall.mjtd.com/test/" (itoa Page) ".asp?x=" x))
  7.   (while (= -1 (Vlax-Get ie 'busy));等待网页打开
  8.     (repeat 1000 (1+ 1))
  9.   )
  10.   (setq all (vlax-get (vlax-get ie 'Document) 'all))
  11.   (setq outtext (vlax-get (vla-item all 0) "outerText"))
  12.   (if (/= (substr outtext 1 (strlen "666")) "666")
  13.     (progn
  14.       (print "校验码不同!有人与你使用相同测试页面,请输入其他不同页码再测试")
  15.       (Vlax-Invoke-Method ie 'Quit);关闭IE
  16.       (vlax-release-object ie)
  17.       (exit)
  18.     )
  19.   )
  20.   (setq text (substr outtext (1+ (strlen "666")) (- (strlen outtext) (strlen "666"))))
  21.   (Vlax-Invoke-Method ie 'Quit);关闭IE
  22.   (vlax-release-object ie)
  23.   (read text)
  24. )
不死猫20130730晨

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 2明经币 +6 金钱 +30 收起 理由
ZZXXQQ + 3 + 30 神马都是浮云
仲文玉 + 3 神马都是浮云

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-3-2 22:58:46 | 显示全部楼层
顶一下,可以进行高德或百度的地理编码服务吗?
发表于 2018-7-4 12:18:40 | 显示全部楼层
猫老师堪称LISP奇才
发表于 2018-6-23 23:56:32 | 显示全部楼层

支持猫老师,总玩高端
 楼主| 发表于 2013-7-30 02:27:26 | 显示全部楼层
本帖最后由 不死猫 于 2013-7-30 02:31 编辑

用生成的代码进行数字的运算测试,就无法知道其中的运算过程了
此方法也适用于其他代码的转换.除了CAD交互 其他的代码都差不多可以这样处理.

通过访问主页面传递表达式,由主页面自动生成子页面.
子页面包含表达式,提供给用户访问.
当然也可以用数据库来处理,效果更好.
发表于 2013-7-30 05:54:21 来自手机 | 显示全部楼层
猫老师太敬业了,那么晚还不睡!顶起!
发表于 2013-7-30 07:50:48 | 显示全部楼层
坐个底板支持猫老师
发表于 2013-7-30 08:01:11 | 显示全部楼层
支持猫老师
发表于 2013-7-30 08:30:10 | 显示全部楼层
又来高级lisp!顶
 楼主| 发表于 2013-7-30 09:48:57 | 显示全部楼层
恩 最好设置IE为默认浏览器  兼容性比较好
论坛上还有其他读取网页的方法  都可以试试
发表于 2013-7-30 15:13:40 | 显示全部楼层
(defun MyCal(x)
        (setq Page 678)       
        (setq x (rtos x 2 6))
        (while (/= x (setq x (vl-string-subst  "!" "." x))))
        (setq ie (Vlax-Create-Object "InternetExplorer.Application" ))
        (Vlax-Invoke ie 'Navigate (strcat "http://nonsmall.mjtd.com/test/" (itoa Page) ".asp?x=" x))
        (while (= -1 (Vlax-Get ie 'busy));等待网页打开
                (repeat 1000 (1+ 1))
        )
        (setq all (vlax-get (vlax-get ie 'Document) 'all))
        (setq outtext (vlax-get (vla-item all 0) "outerText"))
        (if (/= (substr outtext 1 (strlen "767")) "767")
                (progn
                        (print "校验码不同!有人与你使用相同测试页面,请输入其他不同页码再测试")
                        (Vlax-Invoke-Method ie 'Quit);关闭IE
                        (vlax-release-object ie)
                        (exit)
                )
        )
        (setq text (substr outtext (1+ (strlen "767")) (- (strlen outtext) (strlen "767"))))
        (Vlax-Invoke-Method ie 'Quit);关闭IE
        (vlax-release-object ie)
        (read text)
)

??? 是说程序里的计算,要通过网络访问得到计算公式,然后再算,运行。运行完毕后删除计算公式?

这么复杂,给别人程序了,一断网,别人就不能用了?那要经常挨骂了。

发表于 2013-7-30 15:23:35 | 显示全部楼层
用Microsoft.XMLHTTP获取网页文字比ie要轻量级一些,启动速度可能更快

点评

飞诗楼主能给个例子不?  发表于 2021-8-29 12:10
发表于 2013-7-30 16:16:56 | 显示全部楼层
支持猫老师,总玩高端
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-23 19:37 , Processed in 0.191731 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表