找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 2578|回复: 9

[N1盒子] n1 linux 百度贴吧 自动签到 源码

[复制链接]
发表于 2019-1-21 12:47 | 显示全部楼层 |阅读模式
因为百度异地登陆有诸多限制,所以使用了cookie登录,签到效果图如下

python3 环境 使用的第三方库 只有 requests bs4
只要输入自己百度的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=A3043B35EDF****************991882'   ##########这边设置你自己的cookie值  #################

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}}}

'''


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-1-21 12:58 | 显示全部楼层
好厉害啊,,,,,
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-1-21 13:50 | 显示全部楼层
老铁,QQ会员的签到有吗?

点评

这个没搞过  详情 回复 发表于 2019-1-21 15:09
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2019-1-21 15:09 | 显示全部楼层
ziyitony 发表于 2019-1-21 13:50
老铁,QQ会员的签到有吗?

这个没搞过
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-1-21 17:40 | 显示全部楼层
厉害了
楼主,我用python 3安装这些库的时候,总是提醒我版本太低,怎么解决啊
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2019-1-21 17:51 | 显示全部楼层
shnmng 发表于 2019-1-21 17:40
厉害了
楼主,我用python 3安装这些库的时候,总是提醒我版本太低,怎么解决啊

升级一下pip版本,但是应该和这个没关系吧,
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-1-21 22:24 | 显示全部楼层
这个厉害
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2020-2-25 22:33 | 显示全部楼层
这个可以做成php,然后计划执行吗
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2020-3-1 11:49 | 显示全部楼层
Q2595555204 发表于 2020-2-25 22:33
这个可以做成php,然后计划执行吗

可以的,原理都一样
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2023-2-28 13:13 | 显示全部楼层
请问这个能装到n1的openwrt里面吗?怎么装啊?
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-3-29 06:38

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

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