xiaooooooo
发表于 2023-7-12 22:31:48
cxxjackie 发表于 2023-7-12 22:21
你这个好像不是翻页,而是预览内容,翻页应该在页面中有现成算法可以调用的,就是比较难。 ...
的确是预览。不过我技术还没到位先凑合着用
你指的算法是这种通过ajax访问的方法吗?
function getPageE_(url, type = '', method = 'GET', data = '', type2) {
let mimeType,accept;
switch (type) {
case 'json':
accept = 'application/json'; mimeType = 'application/json; charset=' + (document.characterSet||document.charset||document.inputEncoding); break;
case 'text':
accept = 'text/plain'; mimeType = 'text/plain; charset=' + (document.characterSet||document.charset||document.inputEncoding); break;
default:
accept = 'text/html,application/xhtml+xml,application/xml'; mimeType = 'text/html; charset=' + (document.characterSet||document.charset||document.inputEncoding);
}
GM_xmlhttpRequest({
url: url,
method: method,
data: data,
responseType: type,
overrideMimeType: mimeType,
headers: {
'Referer': (curSite.noReferer === true) ? null:location.href,
'Content-Type': (method === 'POST') ? 'application/x-www-form-urlencoded':'',
'User-Agent': navigator.userAgent,
'Accept': accept
},
timeout: 10000,
onload: function (response) {
try {
//console.log('最终 URL:' + response.finalUrl, '返回内容:' + response.responseText)
switch (type) {
case 'json':
curSite.pager.insertE(response.response, type2);
break;
case 'text':
curSite.pager.insertE(response.responseText, type2)
break;
default:
curSite.pager.insertE(createDocumentByString(response.responseText), type2)
}
} catch (e) {
console.log(e);
}
},
onerror: function (response) {
setTimeout(function(){curSite.pageUrl = '';}, 3000)
console.log('URL:' + url, response)
GM_notification({text: '❌ 获取下一页失败,可 3 秒后再次滚动网页重试(或尝试刷新网页)...', timeout: 5000});
},
ontimeout: function (response) {
setTimeout(function(){curSite.pageUrl = '';}, 3000)
console.log('URL:' + url, response)
GM_notification({text: '❌ 获取下一页超时,可 3 秒后再次滚动网页重试(或尝试刷新网页)...', timeout: 5000});
}
});
}
用这个方法我解决不了有的网站cookie加密 以及服务器返回的response加密的问题 所以iframe这招我觉得还不错
cxxjackie
发表于 2023-7-12 23:30:36
xiaooooooo 发表于 2023-7-12 22:31
的确是预览。不过我技术还没到位先凑合着用
你指的算法是这种通过ajax访问的方法吗?
不是,是指页面的翻页也是通过函数实现的,通过逆向技术拿到函数引用,就可以在脚本中直接调用函数来翻页,然后原有的翻页会清除上一页内容,就可以改造相关函数,使其保留内容。这种做法不具备通用性,但应该是性能最好的方案(除非原网站就是一坨)。iframe的做法除了性能不行,有些网站也会限制自己不允许被iframe嵌套,还有就是只适用于get请求,因为iframe是通过url来获取内容的,post请求的url不会改变,所以只能获取到第一页的数据。
xiaooooooo
发表于 2023-7-13 00:25:49
cxxjackie 发表于 2023-7-12 23:30
不是,是指页面的翻页也是通过函数实现的,通过逆向技术拿到函数引用,就可以在脚本中直接调用函数来翻页 ...
大佬有没有这种油猴脚本的例子可以让我学习一下?
我会一点点js逆向,但我只会下断点把加密的函数整个扣出来,然后把密文传进去解密,好像和你说的不是同一个东西
cxxjackie
发表于 2023-7-13 23:38:05
xiaooooooo 发表于 2023-7-13 00:25
大佬有没有这种油猴脚本的例子可以让我学习一下?
我会一点点js逆向,但我只会下断点把加密的函数整个扣 ...
https://bbs.tampermonkey.net.cn/thread-1080-1-1.html
以前写的一篇文章,可以参考下,页面可能已经变了,但思路是差不多的。
xiaooooooo
发表于 2023-7-14 16:47:42
cxxjackie 发表于 2023-7-13 23:38
https://bbs.tampermonkey.net.cn/thread-1080-1-1.html
以前写的一篇文章,可以参考下,页面可能已经变 ...
已拜读。我看到你跟栈找到copy调用的方法,然后直接修改参数值来实现效果。
iframe的缺点你说的没错,但是性能目前不是我重视的方面,逆向找到这个方法并直接调用对我来说更痛苦一些(扶额)
混淆倒是还好,就怕像瑞数,akamai,px那种无限debugger,还有在webpack里面无穷的翻找……
xiaooooooo
发表于 2023-7-19 23:27:28
yang10560 发表于 2023-6-16 22:03
大佬 我可不可以追问一下
这招是不是只对a标签有效?有的页面翻页是点一下li标签或者其他什么td标签之类的 似乎.click()就不行了?