Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
Svn-to-Git
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
王华
Svn-to-Git
Commits
26e356d7
Commit
26e356d7
authored
Dec 25, 2018
by
王进波
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
eb19d2ae
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
40 additions
and
2 deletions
+40
-2
分析高德地图行政区注记数据.md
doc/分析高德地图行政区注记数据.md
+40
-2
1545723994973.png
doc/分析高德地图行政区注记数据/1545723994973.png
+0
-0
1545724379976.png
doc/分析高德地图行政区注记数据/1545724379976.png
+0
-0
1545724639347.png
doc/分析高德地图行政区注记数据/1545724639347.png
+0
-0
No files found.
doc/分析高德地图行政区注记数据.md
View file @
26e356d7
...
...
@@ -48,4 +48,42 @@
JS加载使用了动态注入的方式,在第一次请求时,将压缩混淆的 js 字符串保存在浏览器的
`localStorage`
中,然后用
`eval()`
函数将 js 字符串注入到环境中。
动态注入的 js 会被丢到 Chrome Debugger 的 vm 中,难于调试
\ No newline at end of file
动态注入的 js 会被丢到 Chrome Debugger 的 vm 中,难于调试。
## 思路
由于代码经过压缩和混淆,难于调试,需要想办法将代码转义成语义化的代码,可以将 js 请求的响应保存为本地文件,然后使用 Fiddler 将 js 请求拦截下来,用保存在本地的问题替换服务器响应,这样,可以持续修改本地文件,来不断深入分析代码。
这里,拦截工具,我使用了 Charles ,按道理,Fiddler 也可以实现,而且更加强大,不过由于一开始遇到坑时,我就换了 Charles ,然后在 Charles 上走通了,我就没有再尝试 Fiddler了。
按照这种思路,当我们替换请求响应为保存在本地的文件时,清理缓存后刷新页面,会出现跨域的错误
![
1545723994973
](
E:\Codes\CityGit\SVN-To-Git\doc\分析高德地图行政区注记数据\1545723994973.png
)
出现错误的请求,正是被我将响应替换为本地文件的那个请求。
根据错误提示,原因很明显,是因为请求的响应头中没有出现
`Access-Control-Allow-Origin`
头部, https://kinboy.wang 这个域名访问这个资源是跨域请求,不被浏览器允许。
当我关闭拦截,让请求正常发送到服务器时,可以看到,正常请求的响应头中是包含了
`Access-Control-Allow-Origin`
相关的头部的。
![
1545724379976
](
E:\Codes\CityGit\SVN-To-Git\doc\分析高德地图行政区注记数据\1545724379976.png
)
再看看拦截请求的情况下 ,Charles 中生成的响应的头部,可以看到,被 Charles 拦截后,生成的响应中的确不包含
`Access-Control-Allow-Origin`
头部,不出意外,应该加上相应头部就可以解决问题。
![
1545724639347
](
E:\Codes\CityGit\SVN-To-Git\doc\分析高德地图行政区注记数据\1545724639347.png
)
一般这样的代理工具都有自定义 HTTP 请求的功能,这是基础功能。在 Charles 中,这个功能叫作
`rewrite`
。
我用
`rewrite`
功能把需要拦截的几个请求分别自定义设置了响应头,按照正常响应的头部来设置,然后完美解决问题,Charles 截获请求后,将指定好的本地文件作为请求的响应返回给浏览器了,并且没有报错。
那么接下来就可以继续分析代码了。。
\ No newline at end of file
doc/分析高德地图行政区注记数据/1545723994973.png
0 → 100644
View file @
26e356d7
123 KB
doc/分析高德地图行政区注记数据/1545724379976.png
0 → 100644
View file @
26e356d7
168 KB
doc/分析高德地图行政区注记数据/1545724639347.png
0 → 100644
View file @
26e356d7
194 KB
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment