密码肯定没错,但是你死活登录不了,登录页面检查密码格式不对,无法执行登录的一种解决方法
因为某网站登录页面改版,执行了新的密码校验措施,禁止某些字符输入。但是因为我原来设置密码中有特殊字符,所以无法输入执行登录。
最简单的方法当然是找回密码,或者是请管理员重置你的用户密码。但因为这个网站比较简陋,没有找回密码的功能,管理员也不太会操作。所以只能靠自己了。
前提:
1.因为我原来密码肯定是没错的,这点首先自己得保证。
2.谷歌浏览器可以正常访问网站。
步骤:
1.使用谷歌浏览器的开发者选项功能,调试网页。 选择Sources标签,右边有竖排调试信息控制,注意有个像录音机暂停按钮的键,点它,然后稍等片刻或者在左边网页渲染区鼠标晃荡晃荡,随便点几下,网站就暂停了,处于调试暂停模式下。这个时候网页渲染区会出现一个像录像机单步播放的按钮,旁边一个长条形的,暂时还没有研究旁边按钮的作用。
2.处于调试模式暂停情况下,可以对网站登录页面做手脚了,不过还是趟了一些坑,具体说说:
a.elements页面使劲点点确实可以编辑,不过只能修改部分显示文字之类的,对head部分定义的js函数修改没有效果,想想也能理解,也许是载入页面时候,很多预定义函数就已经载入了,渲染之后仅仅修改element中的函数,实际上不会重新载入你修改后的elements,呵呵,很坑吧?
b.然后你想对修改后的elements保存重载?嗯…遗憾的是,确实你可以复制粘帖这些elements保存在本地电脑了,但是重载是直接从源网站获取的,依然不会加载你修改后的网页(事实上也加载不了,你保存的仅仅是源网站登录页面的一个片段而已,很多资源都没保存,而且修改访问这些本地文件,也基本不可能与远程网站通讯,或者根本连接不到远程网站服务器)
c.于是继续在sources标签下研究,发现了主页的php,哈哈,这下可以编辑保存然后重载了么?遗憾的是,主页的php是只读的,还是那就话:如果你复制主页的php到本地保存修改,再访问修改后的php,基本连不上服务器(原因类似于上一条)。
d.还要继续试下去么?嗯,因为理论上是可行的,比如人见人爱的via浏览器支持脚本修改页面,比如js函数毕竟是客户端函数,比如某安全浏览器可以破解某文库的右键然后选择复制。理论是可以读取网站源代码后在本地自动二次加工修改后再渲染并且仍然能够与远程网站通讯的,所以也许是我们刚刚开始谷歌浏览器调试的大门,太高端,还无从下手而已。
e.既然php页面无法更改,但是我看到php页面的代码,调用了function.js函数库。这个函数库也是网页源代码的一部分,大部分是比较好理解的,就算是我这种不会js的人也能看个大概,毕竟我还是看python多一些,了解一些C和Java,至少有点代码感觉。我发现里面有一个验证密码的函数,功能就是如果发现密码当中如果有非法字符,return false,哈哈,你知道我要干什么了:我把这个验证函数return false改成return true,我知道你犹豫怀疑什么,你怀疑这次保存在哪里?是的,我还是只能保存在本地。我只是希望这次重载网站php的时候谷歌浏览器调试器能智能一点,调取本地修改保存后的function.js函数库,而不是调取远程网站的。
f.这次真的如我所愿了。密码验证函数被我修改了。再次重载php登录远程网站页面的时候,密码可以输入曾经被判断的非法字符。登录成功!
补充思考:
1.谷歌浏览器调试网页,修改elements中的预加载函数无法生效,且网页重载后修改的全部重置还原。无法修改生效php原文件。
2.页面function.js函数库独立文件,可以修改且save as到本地计算机,重载页面会生效本地计算机刚刚保存的function.js,间接加工修改主页面的功能,并且还能跟远程网站正常通讯。
3.一个谷歌标签页面为一个进程调试单位,关闭后调试也就结束了,不影响其它标签页的调试。
4.设置break on断点也可以起到暂停调试作用,但必须断点生效时才能调试,很多时候断点不生效,就得点调试页面sources上的暂停按键,来暂停网页。
5.保持运行网页不暂停,是否可以修改保存和使生效functin.js,暂未尝试。
6.sources标签页面下面有很多events,勾选可以起到断点的效果,比较重要的一个是DOM开头的event,可以勾选,尝试调试。
7.调试的断点,关闭浏览器后,下次重载时不会丢失,但是要打开开发者工具时才起作用。
以上纯属个人研究体会,看谷歌浏览器调试功能的冰山一角,错误之处欢迎评论指出。