新人求助,获取javascript生成的链接
展开全部
方法1:用JS实现一个JavaScript源代码解释器
如果能够获得onclick handler的JS源代码,则可以实现一个JavaScript源代码解释器,JS解释器实际上早就有人实现过了(需要虚拟一个假的全局window对象、执行上下文、代理DOM树的访问,以及最后截获window.open请求或location赋值语句)。
关键问题是,无法获得onclick handler的JS源代码!你只能得到一个JS Function对象。不过Function对象的prototype.ToString好像是可以得到源代码的?(待测试验证)
方法2:设置特定的“期望”数据结构,但网络模块底层拦截这个请求
这个方法则需要在内核里做修改。实现难度可能简单一点:
1.当分析到链接元素的href='#'时,向元素发送一个虚拟的click事件(非真实用户发出的UI交互操作),
2.同时向网络层net模块IPC发送一个expect数据结构:“请捕获接下来的一个main document网络请求,其referer是当前URL,把这个请求URL发给我”
这里似乎可能发生错误的匹配,请参考信息论/编码论相关理论。
3.链接元素的click handler将正常执行,同时触发新URL请求,由于之前设置了期望匹配,此URL请求将被捕获
4.Browser UI主线程收到这个新URL,执行接下来的处理
如果能够获得onclick handler的JS源代码,则可以实现一个JavaScript源代码解释器,JS解释器实际上早就有人实现过了(需要虚拟一个假的全局window对象、执行上下文、代理DOM树的访问,以及最后截获window.open请求或location赋值语句)。
关键问题是,无法获得onclick handler的JS源代码!你只能得到一个JS Function对象。不过Function对象的prototype.ToString好像是可以得到源代码的?(待测试验证)
方法2:设置特定的“期望”数据结构,但网络模块底层拦截这个请求
这个方法则需要在内核里做修改。实现难度可能简单一点:
1.当分析到链接元素的href='#'时,向元素发送一个虚拟的click事件(非真实用户发出的UI交互操作),
2.同时向网络层net模块IPC发送一个expect数据结构:“请捕获接下来的一个main document网络请求,其referer是当前URL,把这个请求URL发给我”
这里似乎可能发生错误的匹配,请参考信息论/编码论相关理论。
3.链接元素的click handler将正常执行,同时触发新URL请求,由于之前设置了期望匹配,此URL请求将被捕获
4.Browser UI主线程收到这个新URL,执行接下来的处理
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询