我在almaconnect.com上,在主页上有一个文本框,当你输入时自动提示大学的一些结果(通过拨打ajax来加载内容).我确实发出了相同的ajax调用的curl请求,但是请求导致终端上的一些加密线路
curl 'https://www.almaconnect.com/suggestions/portaled_institute?q=am' -H 'Host: www.almaconnect.com' -H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0' -H 'Accept: application/json,text/javascript,*/*; q=0.01' -H 'Accept-Language: en-US,en;q=0.5' -H 'Accept-Encoding: gzip,deflate,br' -H 'X-Requested-With: XMLHttpRequest' -H 'Referer: https://www.almaconnect.com/' -H 'Cookie: Almaconnect=; _ga=GA1.2.315358219.1489989532; __utma=117457241.315358219.1489989532.1490871434.1492414070.3; __utmz=117457241.1490871434.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); _gat=1; __utmb=117457241.1.10.1492414070; __utmc=117457241; __utmt=1'
当您进行卷曲呼叫时,您在终端中看到的二进制数据不是加密内容.它只是压缩内容.您可以通过运行来验证它
curl $params > output
file output
你会看到结果与之类似
output: gzip compressed data,from Unix
运行gzip -d -c输出将解压缩并将明文内容打印到终端屏幕.
原因
发生这种情况的原因是,您使用curl调用发送accept-encoding标头.与浏览器不同,curl不会自动解压缩结果.这就是造成这种混乱的原因.
-H 'Accept-Encoding: gzip,br'
从curl调用中删除此特定标头将直接以未压缩的纯文本格式获得响应.您可以尝试以下命令.
curl 'https://www.almaconnect.com/suggestions/portaled_institute?q=am' -H 'Host: www.almaconnect.com' -H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0' -H 'Accept: application/json,en;q=0.5' -H 'X-Requested-With: XMLHttpRequest' -H 'Referer: https://www.almaconnect.com/' -H 'Cookie: Almaconnect=; _ga=GA1.2.315358219.1489989532; __utma=117457241.315358219.1489989532.1490871434.1492414070.3; __utmz=117457241.1490871434.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); _gat=1; __utmb=117457241.1.10.1492414070; __utmc=117457241; __utmt=1'
almaconnect.com并没有真正采取任何额外步骤来混淆他们的AJAX响应.这样做通常是一个坏主意.无论您使用什么方法来模糊您的响应(例如使用HTTP Referrer字段),人们总是可以提出反击措施来打败它们.
花费精力和时间来提出一种最终会被坚定的攻击者打破的机制是不值得的.