Skip to content

Instantly share code, notes, and snippets.

@MOOOWOOO
Last active January 16, 2019 01:49
Show Gist options
  • Select an option

  • Save MOOOWOOO/5373c2bc70868f3e5e23e12930bc0935 to your computer and use it in GitHub Desktop.

Select an option

Save MOOOWOOO/5373c2bc70868f3e5e23e12930bc0935 to your computer and use it in GitHub Desktop.
auto sign on baidu tieba
# -*- coding:utf-8 -*-
import requests
import re
__author__ = 'Jux.Liu'
# 修改自己的cooki
cookie = ''
# 构建请求头数据
headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate, sdch',
'Accept-Language': 'zh-CN,zh;q=0.8,en;q=0.6',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'Cookie': cookie,
'DNT': '1',
'Host': 'tieba.baidu.com',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.99 Safari/537.36'
}
# 获取关注贴吧列表
def find_kw(headers):
page_count = 1
kw_list = []
while 1:
like_url = 'http://tieba.baidu.com/f/like/mylike?&pn={}'.format(page_count)
like_html = requests.get(url=like_url, headers=headers).text
re_kw = re.compile(r'<a href="/f\?kw=(.+?)" title="(.+?)"')
temp_kw = re_kw.findall(like_html)
if not temp_kw:
break
if not kw_list:
kw_list = temp_kw
else:
kw_list += temp_kw
page_count += 1
print('我喜欢的{}个贴吧:'.format(len(kw_list)))
if kw_list:
for i in kw_list:
kw = i[0]
title = i[1]
sign(title, kw, headers)
# 签到
def sign(title, kw, headers):
sign_url = 'http://tieba.baidu.com/mo/m?kw={}'.format(kw)
sign_html = requests.get(url=sign_url, headers=headers).text
re_fid = re.compile(r'<input type="hidden" name="fid" value="(.+?)"\/>')
# print 're_fid:\t', re_fid
fid_l = re.findall(re_fid, sign_html)
if len(fid_l) < 1:
print('{}\t\t错误'.format(title))
else:
fid = fid_l[0]
# print 'fid:\t', fid
re_tbs = re.compile(r'<input type="hidden" name="tbs" value="(.+?)"\/>')
# print 're_tbs:\t', re_tbs
tbs = re.findall(re_tbs, sign_html)[0]
# print 'tbs:\t', tbs
re_sign = re.compile(r'</td><td style="text-align:right;"><span >已签到</span>')
# print 're_sign:\t', re_sign
sign = re.findall(re_sign, sign_html)
# print 'sign:\t', sign
data = {
'tbs': tbs,
'fid': fid,
'kw': kw
}
if sign:
print('{}\t\t已签'.format(title))
else:
print('{}\t\t签到成功'.format(title))
sign_url = 'http://tieba.baidu.com/mo/q---C367D41E4214449AC861EDF6CE73CD4E%3AFG%3D1--1-3-0--2--wapp_1443524105422_889/sign?tbs={}&fid={}+&kw={}'.format(
tbs, fid, kw)
sign_html = requests.get(url=sign_url, headers=headers, data=data)
if __name__ == '__main__':
find_kw(headers)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment