刚学了发送post请求,于是想试一下能不能帮自己一键进行贴吧签到
- 主要使用到的知识点:
- 正则表达式
- json数据 的 loads
- 发送post请求
- 先贴代码:
import urllib.request
import re
import json
import time
# import ssl
# ssl._create_default_https_context = ssl._create_unverified_context #关闭验证
headers = {
# 找到属于自己的再粘贴进来
"Cookie": "Your_Cookie",
"User-Agent": "Your_User-Agent"
}
tieba_url = "http://tieba.baidu.com/sign/add"
# 获取贴吧列表
form_url = "http://tieba.baidu.com/home/main?un=弑神王time"
page_data = urllib.request.urlopen(urllib.request.Request(url="https://tieba.baidu.com/index.html", headers=headers)).read().decode()
form_list = re.findall('"forum_id":(.*?),"forum_name":"(.*?)"', page_data)
for forum in form_list:
# 获取名字
kw = forum[1].encode('latin-1').decode("unicode_escape")
# 获取贴吧站址
forum_url = "http://tieba.baidu.com/f?kw=" + urllib.parse.quote(kw) # 网页中有中文需要转换一下
page = urllib.request.urlopen(urllib.request.Request(url=forum_url, headers=headers)).read().decode('utf-8')
# 获取post请求中tbs数据
tbs_data = re.findall('\'tbs\': "(.*?)"', page)[0]
# 填入数据集合
form_data = {
'ie': 'utf-8',
'kw': kw,
'tbs': tbs_data,
}
data = urllib.parse.urlencode(form_data).encode("utf-8")
# 发送post请求模拟签到
post_req = urllib.request.Request(url=tieba_url, data=data, headers=headers)
# 输出签到成果
try:
status = json.loads(urllib.request.urlopen(post_req).read().decode("utf-8"))["data"]["errmsg"]
except:
status = "failed"
print(kw, status)
time.sleep(1)
print("签到完毕")
如果是自己要运行的话,需要先获取自己登录百度贴吧的Cookie
如果速度过快,网站会要求输入验证码,因此会用到sleep函数控制速度
- 获取Cookie
打开百度贴吧,登录,进入个人主页
按F12进入控制台,再去到Network页面
滚轮滑到最上面,点击进入该文件
滚轮往下滑找到Request Headers
复制Cookie和User-Agent内的内容到代码headers中即可