吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1862|回复: 12
收起左侧

[求助] 监控吾爱编程区更新帖子的server酱脚本

[复制链接]
正己 发表于 2020-9-24 21:29
本帖最后由 正己 于 2020-9-25 12:19 编辑

0x1前言


其实之前就发过帖子,不过在后来运行的过程中遇到了问题,这段时间一直没解决,菜鸡实力不够,眼界太狭窄了,所以来请教一下论坛的大佬们
0x2问题


这是在github上面运行的情况,最新的,我一个学长跟我说过跟吾爱的缓存机制有关,但是本菜鸡也不知道到怎么处理,如下图,返回为空,这个时候刚好就是更新了一篇帖子,但是他为什么会返回为空,我代码中做了判断,如果返回为空的时候,就再次请求一次,但是连续请求十次都是返回为空
1.png
0x3源码


代码写得很烂,大佬们见谅

import requests
import time
import re

headers = {
    "user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36",
    'Connection': 'keep-alive',
    'host': 'www.52pojie.cn',
    'Upgrade-Insecure-Requests': '1',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
    'Accept-Enocding': 'gzip, deflate, br',
    'Accept-Language': 'zh-CN,zh;q=0.9',
}
skey = 'SCU112948T8*****'  # 你的server酱skey

url = 'https://www.52pojie.cn/forum.php?mod=forumdisplay&fid=24&filter=author&orderby=dateline&typeid=29'

def push():
    server_url = "https://sc.ftqq.com/%s.send" % skey
    res = getHTMLText2(url)
    des = re.findall('class="s xst">(.*?)</a>', res)[0]
    print(des)
    params = {
        "text": '爷,您关注的帖子更新啦!',
        "desp": des
    }
    response = requests.get(server_url, params=params)
    json_data = response.json()
    if json_data['errno'] == 0:
        print(" 推送成功。")
    else:
        print("推送失败")

def getHTMLText(url):
    try:
        r = requests.get(url, headers=headers)
        r.raise_for_status()  # 如果状态不是200,引发HTTPError异常
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "网站访问异常"

def getHTMLText2(url):
    try:
        r = requests.get(url)
        r.raise_for_status()  # 如果状态不是200,引发HTTPError异常
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "网站访问异常"

def get_id():
    res = getHTMLText(url)
    time.sleep(1)
    id = re.findall("CONTENT_TID='(.*?)'", res)
    i = 0
    while id == []:
        print("id为空")
        time.sleep(5)
        res = getHTMLText(url)
        id = re.findall("CONTENT_TID='(.*?)'", res)
        i +=1
        print(i,id)
        if i >=10:
            break
    return id

def get_id2():
    res = getHTMLText2(url)
    time.sleep(1)
    id2 = re.findall("CONTENT_TID='(.*?)'", res)
    i = 0
    while id2 == []:
        print("id2为空")
        time.sleep(5)
        res = getHTMLText2(url)
        id2 = re.findall("CONTENT_TID='(.*?)'", res)
        i += 1
        print(i, id2)
        if i >= 10:
            break
    return id2

def main():
    id = get_id()
    print(id)
    time.sleep(1700)
    id2 = get_id2()
    print(id2)
    if id == id2:
        print("暂无帖子更新")
    else:
        push()
        print("爷,您关注的帖子更新啦!")

if __name__ == "__main__":
    main()

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

 楼主| 正己 发表于 2020-9-24 21:30
在线等大佬指定
 楼主| 正己 发表于 2020-9-24 22:04
wang2019 发表于 2020-9-25 00:20
jason903 发表于 2020-9-25 07:56
本帖最后由 jason903 于 2020-9-25 07:58 编辑

不知道你的问题是什么。
在你的这个新帖子里没有明确提出你遇到什么问题
请明确你的问题


shiqianwei 发表于 2020-9-25 08:35
问题描述清楚!
 楼主| 正己 发表于 2020-9-25 12:19
jason903 发表于 2020-9-25 07:56
不知道你的问题是什么。
在你的这个新帖子里没有明确提出你遇到什么问题
请明确你的问题

我的锅,没表述清楚,如下图,返回为空,这个时候刚好就是更新了一篇帖子,但是他为什么会返回为空,我代码中做了判断,如果返回为空的时候,就再次请求一次,但是连续请求十次都是返回为空
1.png
 楼主| 正己 发表于 2020-9-25 12:21

我的锅,没表述清楚,如下图,返回为空,这个时候刚好就是更新了一篇帖子,但是他为什么会返回为空,我代码中做了判断,如果返回为空的时候,就再次请求一次,但是连续请求十次都是返回为空
1.png
jason903 发表于 2020-9-25 12:43
你的代码大致没问题,但有考虑不周全的地方

分析如下:

res = getHTMLText(url)
res为2种结果:1. r.text  2. "网站访问异常"

id = re.findall("CONTENT_TID='(.*?)'", res)
如果:res = "网站访问异常"
id这时候就为[],空了

如果:res = r.text 但r.text里没有"CONTENT_TID='(.*?)'"
id这时候就为[],空了

问题原因:
res是由网络请求的内容,想当然地认为一定包含了"CONTENT_TID='(.*?)'"
但要知道 网络请求 是什么情况都有可能发生的,比如:反爬取


提一点建议,解决方法你自己去思考吧
编码建议:
def getHTMLText(url):
    ...
    except:
        return "网站访问异常"

修改为:
    except Exception as e:
        print(e)
        return "网站访问异常"

遇到到id为空时,把res打印出来:print(res)

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
正己 + 2 + 1 谢谢好哥哥

查看全部评分

 楼主| 正己 发表于 2020-9-25 13:07
wang2019 发表于 2020-9-25 00:20
怎么弄到GitHub上啊

你可以翻一番我之前的帖子
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-22 20:36

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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