如果您觉得我的文章对您有用,请您给我一个关注,您的每一个关注都是对我极大的支持,我也会极大的提高产出效率,To_share_code
做爬虫 基本功就是逆向js,
ps: 其实没必要关心js函数的内部细节,只要找到函数的输入输出点就可以了。
万变不离其宗,只要在 输入、输出的地方下断点,得到处理的结果,就算函数再复杂也不用怕。
煎蛋网是一个初学者接触逆向js思路的首战
上网站: 煎蛋网 妹子图
妹子首页
目的:想拿 查看原图的 高清原图
查看源码
发现所有图片img src指向是 blank.gif
后面还有一个onload = 'jiandan_load_img(this)' 然后 还有一堆字母
我们定位到jiandan_onload_img 这个js
打个断点 debugger
发现这个e 和之前看的 html中的 非常像. 而且这个e 作为参数 传进了一个 jdXXXXXXXXXXXXX的 函数中
咱们再追溯到jdXXXXXXXX函数中
打个断点继续调试
发现这个函数最后return u
u = base64_decode(d)
d = 之前咱们在html 中的 一串英文字母
所以,我们只需把 html页面的英文字母用base64 解码 就可以得到原图的src地址了
上代码
#!/usr/bin/python
# _*_ coding:utf-8 _*_
import base64
import requests
from bs4 import BeautifulSoup
url = 'http://jandan.net/ooxx'
large_url = 'http://ws4.sinaimg.cn/large/' #大图url
response =requests.get(url=url) # html
response.encoding = 'utf-8'
soup = BeautifulSoup(response.text,'lxml')
for i in soup.select('.img-hash'):
link = base64.b64decode(i.text.encode('utf-8'))
base_link = str(link,'utf-8').split('/')[-1]
large_link = large_url+base_link
print(large_link)
算上注释15行
运行后输出
点击访问
前方高能!!!!!!!!!!!!!!!!!
http://ws4.sinaimg.cn/large/87a8e3e8ly1fv7vgxm8a5j20zk1hcti8.jpg