吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9425|回复: 31
收起左侧

[Python 原创] 分析某网站,并利用python自动登陆该网站,下载网站内容

  [复制链接]
愤怒的小车 发表于 2019-5-8 09:35
本帖最后由 愤怒的小车 于 2019-5-8 09:41 编辑

一:本代码是我研究了好久才写出来,七功能主要有自动登陆、自动识别验证码、以及自动识别下载格式进行判断下载!
首先,搬上我们的主角网址,http://lavteam.org/,进去一看,是一个俄罗斯人创建的网站,七内容让我们不亦乐乎。
二:登陆
要进行分析,首先要注册一个账号,账号各位自己注册。
抓包发现,他的登陆请求地址为http://www.lavteam.org/,其中表单:
QQ图片20190508090034.png
我们构造表单,进行请求,其函数为:
def login():
    print('正在登陆......')
    req = session.get(first_url)
    data = {
            'login_name': '账号',
            'login_password': '密码',
            'login': 'submit',
            'image.x': '43',
            'image.y': '11',
    }
    req = session.post(first_url,data = data)
三:查询
登陆进去就需要查找自己想要的内容,比如我们输入ventsim,然后进行抓包,抓包得到:

  • Request URL:

    http://lavteam.org/

  • Request Method:

    POST


其表单为: QQ图片20190508090733.png
接着我们再构造其请求,请求返回的内容列表我把他整理成字典的格式,方便在于我只要输入软件编号,就可以对该内容进行深入操作,我对多页内容都进行了遍历,所有的内容链接都整理了出来,代码如下:
def reach(ventsim):
    data = {
            'do': 'search',
            'subaction': 'search',
            'story': ventsim,
            'x': '42',
            'y':'9' ,
    }
    req = session.post(first_url,data = data).text
    html = etree.HTML(req)
    url = html.xpath('//div[@class="text-left"]/a/@href')
    name = html.xpath('//div[@class="text-left"]/a/text()')
    num = html.xpath('//div[@class="navigation ignore-select"]/a/text()')[-2]
    f = {}
    for i in range(len(name)):
        f = url
        print(i,name)
    for k in range(int(num)-1):
        search_start = 2 + k
        result_from = 11 + 10*k
        data = {
            'do': 'search',
            'subaction': 'search',
            'search_start': str(search_start),
            'full_search':'0' ,
            'result_from': str(result_from),
            'story': ventsim
        }
        req = session.post('http://www.lavteam.org/index.php?do=search', data=data).text
        html = etree.HTML(req)
        url = html.xpath('//div[@class="text-left"]/a/@href')
        name = html.xpath('//div[@class="text-left"]/a/text()')
        for j in range(len(name)):
            f[(k+1)*10+j] = url[j]
            print((k+1)*10+j,name[j])
    return f
四:进入详情界面
我们从上一步查询的返回值中,找到软件详情页面的链接,然后进行请求,抓包得到的结果:

  • Request URL:

    http://lavteam.org/2018/04/02/howden-group-ventsim-visual-premium-v4869.html

  • Request Method:

    GET

IDA Console, Courier New, monospace">然后再用python进行构造这个请求,代码如下:

def intopage(url):
    page = session.get(url).text
    html = etree.HTML(page)
    url = html.xpath('//a[@target="_blank" and @Class = "medium blue awesome"or @class = "medium red awesome" or @class = "small blue awesome" or @class = "small red awesome" or @class = "large blue awesome" or @class = "large red awesome"]/@href')
    return url

五、下载页面
分析可知,其点击进入下载页面的链接在下载页面可以抓包抓到,他是一个get请求,其抓包得到的headers如下:

  • Request URL:

    http://files.lavteam.org/leech?cat=warez%2FPrograms%2FVentSim&file=Howden.Ventsim.Visual.Premium.v4.8.6.9.rar

  • Request Method:

    GET

其构造的代码如下:

def dawnload(url,path,Referer):
    headers = {
        'Host': 'files.lavteam.org',
        'Referer': Referer,
        'Upgrade-Insecure-Requests': '1',
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
    }
    rep = session.get(url,headers = headers).text
    pat = 'accesskey="p">'
    session_html = re.compile(pat).findall(rep)[0][2:-2].split('=')
    session_url = 'http://files.lavteam.org/download/'+session_html[1][:-4]+'/'+session_html[3]
    name = session_html[3]
    # print(session_url)
    yanzheng(url,path,session_url,name)
六、验证
验证码的验证,我们需要请求获取验证码图片,然后我是介入百度的文字识别接口,自动识别验证码内容,然后作为请求验证的表单进行求求验证,如果验证码不正确,则再次进行验证,如果验证码正确,则等待5s,进行下载,代码如下:

def yanzheng(url,path,session_url,name):
    img_url = 'http://files.lavteam.org/img.php?size=3'
    res = session.get(img_url)
    with open('img.jpg', 'wb') as f:
        f.write(res.content)
    img = shibie('img.jpg')
    data = {
        'vImageCodP': img,
        'checkimagecode': '(unable to decode value)',
    }
    header = {
        'Host': 'files.lavteam.org',
        'Origin': 'http://files.lavteam.org',
        'Referer': url,
        'Upgrade-Insecure-Requests': '1',
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
    }
    res = session.post(url, data=data, headers=header).text
    html = etree.HTML(res)
    l = html.xpath('//div/@id')
    if "downloadhtml" in l:
        print('验证码正确!')
        print('请等待10s!')
        time.sleep(10)
        if not os.path.exists(path):
            os.makedirs(path)
        data = {
            'download': '(unable to decode value)',
        }
        heade = {
            'Connection': 'keep-alive',
            'Host': 'files.lavteam.org',
            'Origin': 'http://files.lavteam.org',
            'Referer': url,
            'Upgrade-Insecure-Requests': '1',
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36',
        }
        print('开始下载'+ name +',可能需要很长时间,请耐心等待...')
        res = session.post(session_url, data=data, headers=heade)
        with open(path + name, 'wb') as f:
            f.write(res.content)
        print('下载完成!')
    else:
        print('验证码错误,请重新输入验证码!!!')
        yanzheng(url,path,session_url,name)
七、百度识别接口
在用百度文字是别的时候,我还对图片当中的早点进行了去燥,位的是识别率更高,其整体代码如下:

def shibie(img):
    # 下面3个变量请自行更改
    APP_ID = '11620307'
    API_KEY = 'Nl2oc5uuoPPkGMtoLGCUGgVj'
    SECRET_KEY = 'bF48ggt4d891NFhDHPmfjzGR3DvY4XLO'

    aipOcr = AipOcr(APP_ID, API_KEY, SECRET_KEY)

    filePaths = img
    filePath = Image.open(filePaths)
    filePath = filePath.convert('L')
    threshold = 127
    table = []
    for i in range(256):
        if i < threshold:
            table.append(0)
        else:
            table.append(2)

    filePath = filePath.point(table, '1')
    filePath.save("imgage.png")

    def get_file_content(filePath):
        with open(filePath, 'rb') as fp:
            return fp.read()

    # 定义参数变量
    options = {
        'detect_direction': 'true',
        'language_type': 'CHN_ENG',
    }

    # 调用通用文字识别接口
    filePathss = "imgage.png"
    result = aipOcr.basicAccurate(get_file_content(filePathss), options)
    img = result['words_result'][0]['words']
    imgs = img.replace(' ','')
    print(imgs)
    return imgs
lavteamshibie.rar (2.26 KB, 下载次数: 96)

希望得到大家的热心于评分。

免费评分

参与人数 9吾爱币 +9 热心值 +9 收起 理由
hkdiaod + 1 + 1 谢谢@Thanks!
hohov + 1 谢谢@Thanks!
萌鬼出没 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
天域至尊 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
baichihgl + 1 + 1 我很赞同!
walyb + 1 + 1 谢谢@Thanks!
jskhuizi521 + 1 用心讨论,共获提升!
AnFrank + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 愤怒的小车 发表于 2019-5-8 15:12
苏紫方璇 发表于 2019-5-8 10:01
建议楼主用编辑器中插入代码功能或markdown贴代码,这样比较美观

好的,我不经常发帖,所以你说的我也不是很懂,以后慢慢学习
wanghz 发表于 2021-3-17 00:14
愤怒的小车 发表于 2019-5-8 15:12
好的,我不经常发帖,所以你说的我也不是很懂,以后慢慢学习

想请问下,这个网站现在是注册不了了吗??提示密码不匹配
february 发表于 2019-5-8 09:53
Tra 发表于 2019-5-8 09:55
有点意思,学习了
苏紫方璇 发表于 2019-5-8 10:01
建议楼主用编辑器中插入代码功能或markdown贴代码,这样比较美观
差不多先生i 发表于 2019-5-8 10:05
学习了~~~
珠海大数据编程 发表于 2019-5-8 10:12
有没有可以爬虫楼盘的网站源码
darek 发表于 2019-5-8 10:22
感谢楼主的分析.在学西
jik666 发表于 2019-5-8 10:24
很详细的分析和编程思路,学习一下楼主,谢谢!
liujieaipojie 发表于 2019-5-8 10:26
楼主,我能问个小问题吗,就是你发帖排版怎么排的,就是文字后面加图。 我添加的图片全部都会默认在最下面显示,我想排下版,比如一段话配一个图
夜尽 发表于 2019-5-8 10:26
近期正在学Python,正好拿来学习学习
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 19:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表