Python爬虫之JS逆向入门篇
2019-05-29 本文已影响14人
GoPython
前言
最近有朋友推荐了一个很简单的需要 js 逆向的网站
中国土地市场网
主要是需要获取下面的信息

分析
首先当然是抓包分析返回的数据
或者直接将链接放到代码里面,将响应内容打印出来。
如果一样的话说明直接就能获取到,否则的话可能就是对网页进行了处理等

上面是用代码请求返回的响应
html 中嵌入了 JS,而且很可能做了跳转,因为有个 location 的变量
破解
下面是通过 Chrome 浏览器抓包的过程
经过了两次跳转

其中重定向的链接是在第一次请求返回的响应里面,用 JS 生成的

so, 我们将返回的 JS 扣出来,在本地调试下

其中有些用不到的参数,直接注释掉
比如参数 curlocation 是当前页面的 href,没有用到,反而会给我们调试增加阻碍
因为我们没有 window 这个对象
运行这段 JS,直接生成我们所需的参数
验证
从抓包中我们可以得知总共有三次清求
其中第一次和第二次都会生成验证的 cookie
所以我们也用代码模拟三次请求
代码如下:
def spider():
response = session.get(url)
text = response.text
# f_js = re.findall("javascript\">(.*?)</script>", text)[0]
ctx = execjs.compile(js)
location = ctx.call("YunSuoAutoJump")
second_url = "http://www.landchina.com" + location
_ = session.get(second_url)
res = session.get(url)
selector = Selector(text=res)
result = selector.css("#TAB_contentTable tr")[1:]
td_list = result.css("td")
最后我们看下能否提取出数据
结果一目了然!
