Python3 破解煎蛋网妹子图的加密函数,获取图片

今天闲来无事,抓取煎蛋网上的妹子图,之前就知道源代码中找不到img的真实地址,被换成了jandan_load_img(this)这个函数,这个函数定义很复杂,而我又不懂JS,没办法,只有硬着头皮上。

在网上找了各种办法,大概花了3个多小时,还是一无所获,正准备放弃时,看到代码中有调用这个函数:

function base64_encode(a) {
    return window.btoa(a)
};

这是干嘛的呢?百度得知是base64转ascii码,闲来无事将

<span class="img-hash">Ly93eDEuc2luYWltZy5jbi9tdzYwMC8wMDZyRkhuQWx5MWZ2c2xvdjVnbnFqMzBnczBkdTc1eS5qcGc=</span>

标签中的Text转试试,得到了如下结果

//wx1.sinaimg.cn/mw600/006rFHnAly1fvslov5gnqj30gs0du75y.jpg

之前也有爬取过煎蛋网上的妹子图,一眼看出这就是图片的原地址啊,绕来绕去原来这么简单!!!!!

赶紧写下代码验证,果然都可以正确获取。

代码如下:

#coding=utf-8
import base64
import requests
from bs4 import BeautifulSoup

 

def getHtml(url):
    try:
        headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0'}  
        response = requests.get(url,headers = headers)
        if response.status_code == 200:
            return response.text
        return None
    except RequestException:
        return None
 
def getimgurl(html,imglist):
    soup = BeautifulSoup(html, 'lxml')
    imgs = soup.select('.img-hash')
    for img in imgs:
        imgurl =  base64.b64decode(img.text).decode()
        imgurl = 'http://' + imgurl
        imglist.append(imgurl)
    
        
            
if __name__=='__main__':
    imglist = []
    for i in range(1,2):
        url  = ("http://jandan.net/ooxx/page-%s#comments" % str(i))
        html = getHtml(url)
        getimgurl(html,imglist)
    for img in imglist:
        print (img)

就这么简单!

猜你喜欢

转载自blog.csdn.net/qq523176585/article/details/82919565