我想在知乎主页执行我自己的js代码
使用fiddler针对知乎主页注入自己的js代码,浏览器会对script会对做安全验证(非主动),对于知乎(如果是手机UA,直接追加js即可,pc端ua需要做以下修改)
删除 response headers中的 content-security-policy
修改网页源码中的meta标签
修改fiddler rules中的 OnBeforeResponse
方法 让知乎主页滚动条每三秒跳转带底部
static function OnBeforeResponse(oSession: Session) {
// 首先判断请求域名是否是自己感兴趣的,以及URL中是否含有自己感兴趣的特征字符串。如果是,则将该请求的URL和QueryString记录到日志文件 "c:/fiddler-token.log"中。
if (oSession.HostnameIs("mp.weixin.qq.com") && (oSession.uriContains("https://mp.weixin.qq.com/mp/appmsg_comment?action=getcomment") || oSession.uriContains("https://mp.weixin.qq.com/mp/getappmsgext?f=json"))){
var filename = "E:/fiddler-token.log";
var curDate = new Date();
var logContent = "[" + curDate.toLocaleString() + "] " + oSession.PathAndQuery + "\r\n"+oSession.GetResponseBodyAsString()+"\r\n";
var sw : System.IO.StreamWriter;
if (System.IO.File.Exists(filename)){
sw = System.IO.File.AppendText(filename);
sw.Write(logContent);
}
else{
sw = System.IO.File.CreateText(filename);
sw.Write(logContent);
}
sw.Close();
sw.Dispose();
}else if (oSession.fullUrl == 'https://www.zhihu.com/') {
var res = oSession.GetResponseBodyAsString();
// 浏览器对js脚本做了不安全验证
// 添加 js 脚本
var js_str = '<meta charSet="utf-8"/><script type="text/javascript"> window.onload=function(){ var terval=setInterval(function(){myTimer()},3000);function myTimer(){var document_high = document.body.scrollHeight;window.scrollTo(0,document_high);}}</script>';
var result_response = res.Replace('<meta charSet="utf-8"/>', js_str);
result_response = result_response.replace(/<\/title><meta.*?<link/i,'</title><link');
oSession.utilSetResponseBody(result_response);
// 删除响应头信息
if (oSession.oResponse.headers.Exists('Content-Security-Policy')){
oSession.oResponse.headers.Remove('Content-Security-Policy');
}
}
if (m_Hide304s && oSession.responseCode == 304) {
oSession["ui-hide"] = "true";
}
}