cookie绕过验证码登录博客园自动登录、发帖、删帖

步骤:1、打开博客园登录界面,抓取登录前的headers

2、登录博客园后,抓取登录后的cookies信息,增加了2项cookie。更新到cookie中,即完成登录。

3、新建随笔,保存为草稿。抓包,通过WebForms可以看到存草稿请求的body,把body信息传给post请求。

因为保存草稿箱成功之后,重定向一个url地址,里面带有postId这个参数,所以要先抓取草稿的postid。

4、删除草稿,发现body就是postid参数。

 

 

代码如下:

 # coding:utf-8
import requests

import urllib3
#禁用安全请求警告
urllib3.disable_warnings()

def login(s, url):
    headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0" ,
    }
    #发送一次get请求打开url
    r = s.get(url, headers=headers, verify=False)
    #获取登录前的cookie
    c=requests.cookies.RequestsCookieJar()
    #插入用户密码的cookie    c.set(".CNBlogsCookie","2DAE0BF85DA417E1EA06A8D7193D46B9D470A2833540FB57D7EFC5CAC8E195A050AD021EE8DA02C23C82F9D434AB388D6581E640892999A0F68C5957225BF66E9B2F31A5E89BF03E8BE8AB8E95B9465197A00B9F")
    c.set(".Cnblogs.AspNetCore.Cookies","CfDJ8FHXRRtkJWRFtU30nh_M9mCOUDJ_0cBGFLj8p2QL3oRd3wBUyyslV6IWpnIS2rRu6l5HxY9-lpGnma-CMd4AqKHD1rnytSxhjZlfC-2VpTebUg3Q7oRdleBjNzXWddMrTr_uCeAP7kcaLd-J3Z6EfYjrIrvwDzsjSbWG1n7vU9eimyuZ-69t9-Q9-Jc6gtXq6dohh7jj1v_8IqFLfk6hDMsQx03jNRM-7DEcfWNM1IqWMISIff3-qIazmcR7LyA-RkABczujkrdPqq7m8orA_ZyuQSLFSXDCOBeEAbAQzs-27IagHHNJLUwbH0FwxfIwrw")
    #更新cookie
    s.cookies.update(c)
    print(s.cookies)

def save_box(s, url2, title, body_data):
    body = {"__VIEWSTATE":"",
    "__VIEWSTATEGENERATOR":"FE27D343",
    "Editor$Edit$txbTitle":title,   #编辑内容的标题用title参数
    "Editor$Edit$EditorBody":body_data,  #正文用body_data参数
    "Editor$Edit$Advanced$ckbPublished":"on",
    "Editor$Edit$Advanced$chkDisplayHomePage":"on",
    "Editor$Edit$Advanced$chkComments":"on",
    "Editor$Edit$Advanced$chkMainSyndication":"on",
    "Editor$Edit$lkbDraft":"存为草稿"
    }
    r2 = s.post(url2, data=body, verify=False)
    print(r2.url)
    return r2.url
    
def get_postid(u):
    '''第三步:正则表达式提取参数,(.+?)匹配第一个字符后立即返回'''
    import re
    postid=re.findall("postid=(.+?)&",u)
    print(postid)  #这里是只有1个对象的list
    if len(postid)<1:
        return ''
    else:
        return postid[0] #这才是要提取的字符串
        
def delete_box(s, url3, postid):
    '''第四步:删除草稿箱'''
    json3={"postId":postid}
    r3=s.post(url3, json=json3, verify=False)
    print(r3.json()) #返回一个python字典

if __name__=='__main__':
    url = "https://passport.cnblogs.com/user/signin"
    #创建一个全局的session
    s=requests.session()
    login(s,url)
    url2="https://i.cnblogs.com/EditPosts.aspx?opt=1"
    u=save_box(s,url2,"标题:1111111","正文内容:22222222")
    postid = get_postid(u)
    url3="https://i.cnblogs.com/post/delete"
    delete_box(s, url3, postid)

转载于:https://www.cnblogs.com/xiaohuhu/p/9383657.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值