问题描述
互联网第八章的过程里面有一步是需要用URLClient访问https://oc.gdufs.edu.cn/ch08去获取一个key值。
按照正常的步骤,需要使用URLClient去访问,然后在里面翻翻找找就能找到这个key。
虽然但是有没有别的方法获得这个key呢?有的呢!
思路
先用浏览器打开这个页面,没有看到这个value值,很明显是隐藏了起来(前面也看到type里面有一个hidden)。
F12打开开发者工具,直接Ctrl+F搜索hidden。好家伙,还不让看。
到这里初步猜想就出来了,服务器是通过判断客户端的类型来决定是否显示这个key。在http里面,标识客户端一般使用User-Agent。很明显,如果通过浏览器访问,User-Agent会是
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
所以只需要修改一下User-Agent就可以看到这个key啦!
在这里还剩下一个问题,用URLClient请求URL,默认的UA会是什么呢?这里卡了我颇久(可能十几分钟),我翻了Java的手册甚至尝试了用wireshark抓包(这个是真没用),然后觉得可能我方法不对之际,想到随便打一个java进去,没想到就成功了!
解法
前面说到,只需要改成正确的UA就可以看到这个key了,所以只需要用开发者工具把UA改成java就行。具体方法如下。
打开开发者工具,找到Network conditions,去掉Select automatically的勾,然后选择Custom,输入java,刷新页面即可。可以看到图中已经获得了这个key。
如果需要在网页上看到这个效果,把type="hidden"直接删掉即可。
有什么用
预计期末考会有一个类似的过程(寻宝?),用quickhack直接就能搞定。