吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8928|回复: 4
收起左侧

[会员申请] 申请会员ID:Abbeyok【申请通过】

[复制链接]
吾爱游客  发表于 2019-5-27 22:10
1、申 请 I D:Abbeyok
2、个人邮箱:abbeyokgo@gmail.com
3、原创技术文章:本人是Python爱好者,擅长写爬虫和web开发,希望在此和各位大牛交流学习


---> 关于爬虫,分享一个Discuz反爬虫的经历
Discuz的反爬虫基本有三个阶段:


  • 第一个阶段,cookies反爬虫:
    当访问一个discuz论坛频次超过一定次数之后,就会通过js写cookies的方式,js验证cookies,如果通过则可以继续访问,这个阶段很容易通过,只要通过正则匹配找到写入的cookies内容,然后传入session,即可。
    以hostloc为例:
    html内容为:
    [HTML] 纯文本查看 复制代码
    <html>
    <body>
        </script><noscript><h1 style="text-align:center;color:red;"><strong>Please turn JavaScript on and reload the page.</strong></h1></noscript>
        <script>
            document.cookie = "L7FW=2b5b96b9100d06a0850dcf1a8d9c14cb; path=/";
            location.href = "https://www.hostloc.com/?d=1";
        </script>
    </body>
    </html>

    通过Python处理:
    [Python] 纯文本查看 复制代码
    import requests
    import re
    
    url='https://www.hostloc.com'
    session=requests.Session()
    r=session.get(url)
    
    if len(re.findall('document.cookie=".*?";',r.text))>0:
        rcookies=re.findall('document.cookie="(.*?)";',r.text)[0]
        cookies={}
        for kv in rcookies.split(';'):
            k,v=kv.strip().split('=',1)
            cookies[k]=v
            session.cookies.set(**cookies)
    if len(re.findall('location.href="(.*?)";',r.text))>0:
        redirect_url=re.findall('location.href="(.*?)";',r.text)[0]
        if not redirect_url.startswith('https://'):
            redirect_url=home+redirect_url
        r=session.get(redirect_url)
    print(r.text)

  • 第二个阶段:js反爬虫阶段
    超过了第一个阶段,再次触达反爬虫机制,第二阶段其实也是cookies验证,但是就不是直接告诉你cookies内容了,而是通过js计算得来的cookies
    HTML内容为:
    [HTML] 纯文本查看 复制代码
    <html>
    
    <body>
        <script type="text/javascript" src="/aes.min.js"></script><noscript><h1 style="text-align:center;color:red;"><strong>Please turn JavaScript on and reload the page.</strong></h1></noscript>
        <script>
        function toNumbers(d) { var e = [];
            d.replace(/(..)/g, function(d) { e.push(parseInt(d, 16)) }); return e }
    
        function toHex() { for (var d = [], d = 1 == arguments.length && arguments[0].constructor == Array ? arguments[0] : arguments, e = "", f = 0; f < d.length; f++) e += (16 > d[f] ? "0" : "") + d[f].toString(16); return e.toLowerCase() }
        var a = toNumbers("2b5b96b9100d06a0850dcf1a8d9c14cb"),
            b = toNumbers("ce4873ff28d9d18d8d4f31e94470db34"),
            c = toNumbers("158b191e59dc44701bac485da7b29143");
        document.cookie = "L7FW=" + toHex(slowAES.decrypt(c, 2, a, b)) + ";  path=/";
        location.href = "https://www.hostloc.com/?d=1";
        </script>
    </body>
    
    </html>

    这个时候有两种选择:①用python重写计算过程。但是discuz的计算算法可能有好几套,因为每次刷新计算的方式都不一样,这种方式纯粹吃力不讨好。②调用selenium访问网页,获取到cookies,然后返回给requests用,这里用到的是第二种,比较方便快捷
    Python代码:
    [Python] 纯文本查看 复制代码
    import requests
    import re
    from selenium import webdriver
    
    url='https://www.hostloc.com'
    session=requests.Session()
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gpu')
    chrome_options.add_argument('--no-sandbox')
    driver = webdriver.Chrome(executable_path='path of chromedriver',chrome_options=chrome_options)
    
    r=session.get(url)
    if len(re.findall('document.cookie="L7FW=.*',r.text))>0:
        self.driver.get(url)
        cookie=driver.get_cookies()
        session.cookies=requests.utils.cookiejar_from_dict(cookie)
        r=session.get(url)
    print(r.text)
  • 第三阶段:封锁IP阶段
    到了这个阶段,基本上discuz已经认定你是爬虫了,所以直接锁死你的ip一段时间。这种情况下:①通过代{过}{滤}理访问;②放弃
    由于我当时是用来做“邀请人查询网站”的网站爬虫,既然论坛锁死ip了,就不想继续花费更多成本去搞,所以就没有继续用代{过}{滤}理去写。




原文地址:https://www.abbeyok.com/archives/206


---> 关于Web开发,本人写过比较多的开源网站:
1. PyOne:一款基于Flask开发的onedrive文件管理、分享程序。https://github.com/abbeyokgo/PyOne
2. payjs_faka:调用payjs开发的发卡平台:https://github.com/abbeyokgo/payjs_faka
3. ojbk_jiexi:比较老的项目了,可用于解析:91*、微博、tumblr等网站的视频:https://github.com/abbeyokgo/ojbk_jiexi

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

Hmily 发表于 2019-5-28 10:51
I D:Abbeyok
邮箱:abbeyokgo@gmail.com

申请通过,欢迎光临吾爱破解论坛,期待吾爱破解有你更加精彩,ID和密码自己通过邮件密码找回功能修改,请即时登陆并修改密码!
登陆后请在一周内在此帖报道,否则将删除ID信息。
吾爱游客  发表于 2019-5-28 12:44
Hmily 发表于 2019-5-28 10:51
I D:Abbeyok
邮箱:

抱歉,您填写的账户资料不匹配,不能使用取回密码功能,可能账号或邮箱有误,也可能没活跃被清理。

找回密码提示这个

点评

你确认下是不是申请的账号和邮箱写错了?还有换个浏览器试下?  详情 回复 发表于 2019-5-28 16:25
Hmily 发表于 2019-5-28 16:25
游客 183.62.134.x 发表于 2019-5-28 12:44
抱歉,您填写的账户资料不匹配,不能使用取回密码功能,可能账号或邮箱有误,也可能没活跃被清理。

找 ...

你确认下是不是申请的账号和邮箱写错了?还有换个浏览器试下?
Abbeyok 发表于 2019-5-28 17:21
Abbeyok前来报到,感谢H大
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-15 09:58

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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