吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6377|回复: 23
收起左侧

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

[复制链接]
18251370925 发表于 2019-1-21 12:41
     因为百度异地登陆有诸多限制,所以使用了cookie登录,实现一键签到所有关注贴吧,效果如下图
签到截图.jpg
python3 使用到的第三方库 有 requests ,bs4
只需要输入自己的cookie值就可以使用,挂在自己的服务器上,每天自动签到美滋滋,
cookie有效期很久,我自己的已经使用了四十多天了,依然有效
# -*- coding:utf-8 -*-
import requests,datetime,re,os,sys,time
from bs4 import BeautifulSoup

def match_bar_name(soup):
    '''
           获取 ####  当前页    ### 关注贴吧名字 和 链接,返回列表数据,格式[{'name':'abc','link':'www.asdfaf.asdfasdf'},'name':'abc','link':'www.asdfaf.asdfasdf'}],

           这里关注的贴吧名字隐藏在了html中,无法直接访问获取json返回值,用到了bs4处理网页数据
    '''
    list=[]
    for i in soup.find_all('a'):
        if i.has_attr('href') and not i.has_attr('class') and i.has_attr('title'):
            if i.string != 'lua':
                list.append({'name':i.string,'link':'http://tieba.baidu.com/'+i.get('href')})
    return list



# url='http://tieba.baidu.com/f/like/mylike?v=%d'%int(float(time.time())*1000)
def get_bar_link():
    '''
        获取 #####  所有页  ####关注贴吧     名字 和 链接,遍历所有页,直到最后一页

    '''
    url=r'http://tieba.baidu.com/f/like/mylike?pn=%d'
    pg=1
    l = []
    while 1:
        res=s.get(url%pg,headers=headers)
        soup=BeautifulSoup(res.text,'html.parser')
        l.extend(match_bar_name(soup))
        if '下一页' in str(soup):
            pg+=1
        else:
            return l

def check(name,link):
    '''
    name: 贴吧名字
    link:贴吧链接
    利用正则表达式 获取每个关注贴吧 提交数据tbs
    然后签到,并返回签到结果
    '''
    try:
        res=s.get(link)
        tbs=re.compile('\'tbs\': "(.*?)"')
        find_tbs=re.findall(tbs,res.text)
        if not find_tbs:   ###### 没有查找到tbs   跳过这个吧的签到 ##################
            return -1
        data={
            'ie':'utf-8',
            'kw':name,
            'tbs':find_tbs[0],
        }

        url='http://tieba.baidu.com/sign/add'
        res=s.post(url,data=data,headers=headers)          ######## 签到 post
        print(datetime.datetime.now(),'    ',name,'   ',res.json())
        return int(res.json()['no'])   #########返回提交结果

    except:
        return -1




s=requests.session()
cookie='BAIDUID=A3043B35EDF6***********************************47991882'   #########类似于这样的一段代码###########  浏览器提取   ########等会附上提取教程

headers={
    'Cookie':cookie,
    'Upgrade-Insecure-Requests':'1',
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',
}


for i in get_bar_link():
    '''
    根据签到的返回值  处理结果
    '''
    try:
        res=check(i['name'], i['link'])
        if res==0:
            with open(os.path.join(sys.path[0], '1.log'), 'a+') as f:           ###############这边使用sys.path  是为了在linux 后台启动时识别路径 ################
                f.write(str(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')) + '  ' + i['name'] + '   签到成功\n')
        elif res==1101:
            with open(os.path.join(sys.path[0], '1.log'), 'a+') as f:
                f.write(str(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')) + '  ' + i['name'] + '   亲,你之前已经签过到了\n')
        elif res==1102:
            with open(os.path.join(sys.path[0], '1.log'), 'a+') as f:
                f.write(str(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')) + '  ' + i['name'] + '   签到太快,重新签到本吧\n')
            time.sleep(10)
            check(i['name'], i['link'])
        else:
            print('未知返回值,重新签到本吧')
            check(i['name'], i['link'])



        time.sleep(2)   ########防止签到太快
    except :
        print('未知报错 重新签到本吧')
        check(i['name'], i['link'])


'''
附上 3种 签到返回json
签到太快    {'no': 1102, 'error': '您签得太快了 ,先看看贴子再来签吧:)', 'data': ''}
已经签过到  {'no': 1101, 'error': '亲,你之前已经签过了', 'data': ''}
成功签到的  {'no': 0, 'error': '', 'data': {'errno': 0, 'errmsg': 'success', 'sign_version': 2, 'is_block': 0, 'finfo': {'forum_info': {'forum_id': 548717, 'forum_name': 'katana'}, 'current_rank_info': {'sign_count': 966}}, 'uinfo': {'user_id': 774850436, 'is_sign_in': 1, 'user_sign_rank': 966, 'sign_time': 1548040220, 'cont_sign_num': 1, 'total_sign_num': 1, 'cout_total_sing_num': 1, 'hun_sign_num': 0, 'total_resign_num': 0, 'is_org_name': 0}}}

'''

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
shiqianwei + 1 + 1 这么棒的东西没人上分?

查看全部评分

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

 楼主| 18251370925 发表于 2020-3-15 21:20
zy0123 发表于 2020-3-12 11:55
用了几天,现在执行出现 ‘’未知返回值,请重新签到本吧”

我这一直稳定运行  上个截图看看
 楼主| 18251370925 发表于 2019-1-21 17:20 来自手机
向往的歌 发表于 2019-1-21 15:35
亲,我知道是python3代码。我想问的是——要如何运行?电脑没有装python3啊……

先去装个python3在说
shu3590952 发表于 2019-1-21 13:16
向往的歌 发表于 2019-1-21 13:44
请问,这一串代码如何运行???
wikiyc 发表于 2019-1-21 13:57
谢谢分享,下班后测试下
rxxcy 发表于 2019-1-21 14:08
哥们你需要重新排一下版
坏人。丶 发表于 2019-1-21 14:18
找不到从哪里运行。。主函数呢
 楼主| 18251370925 发表于 2019-1-21 15:04
rxxcy 发表于 2019-1-21 14:08
哥们你需要重新排一下版

直接粘贴代码过来的
 楼主| 18251370925 发表于 2019-1-21 15:05
坏人。丶 发表于 2019-1-21 14:18
找不到从哪里运行。。主函数呢

从s=requests.session()往下都是主函数
 楼主| 18251370925 发表于 2019-1-21 15:06
向往的歌 发表于 2019-1-21 13:44
请问,这一串代码如何运行???

python3代码
向往的歌 发表于 2019-1-21 15:27
亲,我知道是python3代码。我想问的是——要如何运行?电脑没有装python3啊……
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-17 02:32

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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