nanqian 发表于 2022-8-21 17:24

百度贴吧签到助手 [修复只能签到20个的问题]

本帖最后由 nanqian 于 2022-8-25 16:45 编辑

前几天在站内看到有个兄弟分享了自己用python写的贴吧签到,正好这段时间在学python,于是为了验收一下自己的学习成果在看了个思路后自己写了一份

用pyinstaller打包了一下,在同一目录下的cookie.txt里填好cookie就可以用了



下面的代码是把cookie填在文件里的
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import re
import requests
import os
import time
import platform
from progress.bar import IncrementalBar

my_cookie = ''
my_header = {'Cookie': my_cookie,
             'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36'}


def clear():
    # 返回系统平台/OS的名称,如Linux,Windows,Java,Darwin
    system = platform.system()
    if system == u'Windows':
      os.system('cls')
    else:
      os.system('clear')


total = 0
success_num = 0
repeat = 0
fail_list = []
section = requests.session()


def signup(tb):
    global total, success_num, repeat, fail_list
    total += 1
    time.sleep(0.1)
    # print(f' \n ♪{tb}吧')
    sign_data = {
      'ie': 'utf-8',
      'kw': tb,
      'tbs': time.time(),
    }
    sign_url = 'https://tieba.baidu.com/sign/add'
    req = section.post(sign_url, data=sign_data, headers=my_header)
    if req.json()['error'] == '':
      success_num += 1
    elif req.json()['error'] == u'亲,你之前已经签过了':
      repeat += 1
    else:# 把签到失败的存储在列表里
      fail_list.append(tb)


def autoSignup():
    page = 1# 从第一页开始
    print(u' \n如果您关注的贴吧较多将会分组签到,每组最多20个')
    while True:
      list_url = f'https://tieba.baidu.com/f/like/mylike?&pn={page}'
      res = section.get(list_url, headers=my_header)
      tb_list = re.findall(r'<a href=".*?" title=".*?">(.*?)</a>', res.text)
      if len(tb_list) == 0:
            break
      print('-------------------------')
      # 创建进度条
      mylist = tb_list
      bar = IncrementalBar('·', max=len(mylist))
      for tb in tb_list:
            bar.next()
            signup(tb)
            time.sleep(0.5)
      bar.finish()
      page += 1# 循环结束+1页
    fail_num = total - success_num - repeat
    print('-------------------------')
    print(
      f' 您本次尝试签到{total}个吧,其中:\n'
      f'    {success_num}个签到成功,{repeat}个已经签到过,{fail_num}个签到失败\n'
      f'    签到失败的贴吧列表:{fail_list}')
    print(u'\n\n 所有贴吧签到完成,感谢您的使用!')


def main():
    if __name__ == '__main__':
      clear()
      for t in range(0, 5):
            print(
                u'\t\n -- 该文件仅用于学习交流,请合法使用并在下载后的24小时内删除! --\n')
            time.sleep(0.3)
      time.sleep(1.5)
      clear()# 清除提示内容,下面正式开始
      if my_cookie == '':
            print(u' cookie为空')
            input(u' 按回车键关闭程序…')
            return
      autoSignup()
    input(u' 按回车键关闭程序…')


main()





---
### 2022.8.25
1.解决只能签到20个的问题
2.使用session来减少握手时间,提高效率
3.删除了get_tbs函数,直接使用time.time()生成tbs参数
4.改用进度条显示进度

感谢33楼@zhai0122的建议


应用版及源码下载链接:https://nanqian.lanzouv.com/b05oo670h 密码:i26x

nanqian 发表于 2022-8-22 23:07

1332149404 发表于 2022-8-22 22:39
怎么获取贴吧cookie呀

在贴吧首页登录账号后,F12打开浏览器的开发者工具,选择网络(Network),刷新页面,在出现的列表的最上面有一个index.html,点进去后在右边的请求头(Request Headers)一项就可以看到Cookie,右键复制就可以了
或者百度一下应该也是有图文教程的

wzyl 发表于 2022-8-21 20:03

谢谢老板的分享 正好想找一个自动签到贴吧的软件工具

nanqian 发表于 2022-8-25 20:59

a2579111 发表于 2022-8-25 18:45
大佬你好,
我运行提示缺少api-ms-win-core-path-|1-1-0.dll,
是不是要下载个什么东西补一下?

https://blog.csdn.net/gwz_6903/article/details/116304750你试试看行不行

nanqian 发表于 2022-8-21 20:51

丨miss丶星星 发表于 2022-8-21 19:58
最近python很火啊,支持一下

是啊挺多人学的,好上手又能轻松实现一些自动化

丨miss丶星星 发表于 2022-8-21 19:58

最近python很火啊,支持一下

xcoogg 发表于 2022-8-21 20:16

不错,感谢分享

xynm 发表于 2022-8-21 20:30

太感谢了,顺便学习楼主的思路

xiazhi52 发表于 2022-8-21 21:22

这个不错

大方 发表于 2022-8-21 21:33

我把这个挂到GitHub上做个任务每天自动执行可以嘛?

lfm333 发表于 2022-8-21 21:43

感谢大佬分享

似梦清风 发表于 2022-8-21 21:44

cookie是BDUSS还是什么,粘进去不对
页: [1] 2 3 4 5 6 7
查看完整版本: 百度贴吧签到助手 [修复只能签到20个的问题]