吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4014|回复: 21
收起左侧

[Python 转载] Python 百度贴吧自动签到

  [复制链接]
redblue 发表于 2020-6-3 21:36
本帖最后由 redblue 于 2020-6-3 21:39 编辑

[Python] 纯文本查看 复制代码
import datetime
import os
import re

import requests
import bs4


# 获取关注的所有贴吧链接
def get_tieba_link():
    url = 'http://tieba.baidu.com/f/like/mylike?&pn='
    page = 1
    links = []
    while True:
        response = requests.get(url + str(page), headers=headers)
        bs = bs4.BeautifulSoup(response.text, 'lxml')
        for a in bs.select('table tr>td:first-child>a'):
            links.append({'href': a.get('href'), 'name': a.string})
        if '下一页' not in str(bs):
            break
        page += 1
    return links


# 从贴吧链接中获取贴吧签到参数
def tieba_batch_sign():
    links = get_tieba_link()
    for link in links:
        response = requests.get('https://tieba.baidu.com/' + link['href'], headers=headers)
        tbs_reg = re.compile(r'\'tbs\':\s"(.*?)"')
        tbs = tbs_reg.search(response.text).group(1)
        if not tbs:  # 如果tbs不存在则跳过本次循环
            continue
        param = {'ie': 'utf-8', 'kw': link['name'], 'tbs': tbs}
        response = requests.post('https://tieba.baidu.com/sign/add', data=param, headers=headers)
        result = response.json()
        if result['no'] == 0:
            msg = str(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')) + ' ' + link['name'] + ' 签到成功\n'
        else:
            msg = str(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')) + ' ' + link['name'] + ' ' + result[
                'error'] + '\n'
        print(msg)
        with open(os.path.join(os.getcwd(), 'sign.log'), 'a+') as loghandle:
            loghandle.write(msg)


if __name__ == '__main__':
    headers = {
        'cookie': 'xxxxxxxxxxxx'
    }
    tieba_batch_sign()


问题分析1.获取登录百度贴吧的cookie,在后面请求中都跟上这个cookie
snipaste20200603_212400.png
2.获取所有关注的贴吧在百度贴吧首页(https://tieba.baidu.com/)观察发现,不能直接获取到所有的吧的链接和名称,查看更多里显示的不能直接获取
snipaste20200603_212926.png
既然在首页获取不到,那就换个地方获取,经过观察在我的关注贴吧页面(http://tieba.baidu.com/i/i/forum)似乎可以获取到所有贴吧的信息,
snipaste20200603_213039.png
然而写代码的时候还是找不到,打开这个页面的源码看看
snipaste20200603_213137.png snipaste20200603_213218.png
源码里面这个div中时空的,说明贴吧的信息是通过另外的请求加载上的,所以我们可以去观察开发者工具里的网络请求信息
snipaste20200603_213258.png
分析上图中的请求,可以发现http://tieba.baidu.com/f/like/mylike?v=1591188824982才是真正获取贴吧信息的页面
3.获取签到链接和签到参数找一个还没有签到的贴吧,签到看看
snipaste20200603_213412.png
从图中可以得知请求地址、请求方式、和请求参数
4.分析签到参数在上一步中得到了请求参数,参数中前面两个还好说,最后一个tbs似乎不知道哪里来的,我们根据上图中的tbs值,在这个页面源码里查找这个值
snipaste20200603_213451.png
接下来只要用正则匹配将tbs的值匹配出来就好了。
5.发送签到请求
前面的准备工作都做好了,现在就直接发送请求就好了,注意请求方式是post
6.部署到服务器上,每天零点种就开始执行签到
0 0 * * * python /tieba_batch_sign.py > /dev/null

免费评分

参与人数 3吾爱币 +5 热心值 +3 收起 理由
dspowj + 1 + 1 谢谢@Thanks!
wushaominkk + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Zeaf + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

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

 楼主| redblue 发表于 2020-6-3 22:23
那年夏天52 发表于 2020-6-3 22:15
cookie要经常换的吧,要是能登陆就好了

百度贴吧的cookie有效期很长的,你登陆贴吧看看就知道了,只要不改密码。
lxyadobe 发表于 2020-7-2 22:39
Zeaf 发表于 2020-7-2 22:27
https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=1192841&pid=32250238

ok,多谢
Zeaf 发表于 2020-6-3 21:42
Zeaf 发表于 2020-6-3 21:51
话说云服务器提示没有bs4这个库怎么办
凡凡之呗 发表于 2020-6-3 21:58
cookie是有过期时间的吧,能分析出登陆的密码加密方式吗
 楼主| redblue 发表于 2020-6-3 22:00
Zeaf 发表于 2020-6-3 21:51
话说云服务器提示没有bs4这个库怎么办

使用pip install Beautifulsoup4 命令安装bs4这个库就可以了啊
Zeaf 发表于 2020-6-3 22:01
redblue 发表于 2020-6-3 22:00
使用pip install Beautifulsoup4 命令安装bs4这个库就可以了啊

哦,说错了,云函数怎么弄?
 楼主| redblue 发表于 2020-6-3 22:04
Zeaf 发表于 2020-6-3 22:01
哦,说错了,云函数怎么弄?

你看这个帖子https://www.52pojie.cn/thread-1155287-1-1.html

免费评分

参与人数 1吾爱币 +1 收起 理由
Zeaf + 1 热心回复!

查看全部评分

b0y 发表于 2020-6-3 22:10
贴吧APP有一键签到功能 楼主分析一下看看  
 楼主| redblue 发表于 2020-6-3 22:13
b0y 发表于 2020-6-3 22:10
贴吧APP有一键签到功能 楼主分析一下看看

那个一键签到要求贴吧达到一定等级的
那年夏天52 发表于 2020-6-3 22:15
cookie要经常换的吧,要是能登陆就好了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-4-26 11:18

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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