• 自动登陆抽屉并点赞(2)


    我们先登陆抽屉账号

    然后打开控制台,仔细观察变化,通常只需要观察最底部的变化

     

    再往下翻,并没有看到from-data传值,我们这时点赞,并查看Response

    根据思路我写了一段代码

    import requests
    
    # 注意:防爬虫策略
    response = requests.post(
        url='https://dig.chouti.com/login',
        data={
            'phone': '8615921302790',
            'password': 'a12!',
            'oneMonth': '1'
        },
        headers={
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36'
        }
    )
    # print(response.text)
    # 点赞
    r1 = requests.post(
        url='https://dig.chouti.com/link/vote?linksId=20386976',
        headers={
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36'
        }
    )
    print(r1.text)

    print之后发现给的是首页页面,并不是我们想要的,这段代码上面登陆,下面点赞,根据web判断,浏览器向抽屉发了个请求,把用户名密码发过去了,并返回一个cookie放在浏览器上,下次浏览器再访问抽屉会带着这个cookie,抽屉才能判断你是登陆成功的用户,如果此时你没带cookie,自然就判断为未登录的用户从而返回到首页。所以登陆请求要获取cookie再次访问也要携带cookie,而这段代码恰恰差了这两步。

     第一步我们先获取cookie

    import requests
    
    # 注意:防爬虫策略
    response_login = requests.post(
        url='https://dig.chouti.com/login',
        data={
            'phone': '8615921302790',
            'password': 'a123!',
            'oneMonth': '1'
        },
        headers={
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36'
        }
    )
    cookie_dict = response_login.cookies.get_dict()
    print(cookie_dict)

    print得到下面的字典:

    第二步我们再次访问点赞的时候把cookie带过去

    r1 = requests.post(
        url='https://dig.chouti.com/link/vote?linksId=20386976',
        headers={
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36'
        },
        cookies = cookie_dict
    )

    结果发现还是不行,我们再来分析浏览器点赞

    请求头里带有cookie,我们把这个cookie拿来用,结果发现可以点赞,有可能是第一次的cookie没有被抽屉授权所致。代码重构如下:

    import requests
    
    # 先访问抽屉最热帮,获取cookie(未授权的)
    r1 = requests.get(
        url='https://dig.chouti.com/',
        headers={
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36'
        }
    )
    r1_cookie_dict = r1.cookies.get_dict()
    
    # 发送用户名和密码认证 + cookie(未授权)
    # 注意:防爬虫策略
    response_login = requests.post(
        url='https://dig.chouti.com/login',
        data={
            'phone': '8615921302790',
            'password': 'a123',  # 这里请输入自己正确的密码
            'oneMonth': '1'
        },
        headers={
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36'
        },
        cookies=r1_cookie_dict
    )
    
    # 点赞
    r1 = requests.post(
        url='https://dig.chouti.com/link/vote?linksId=20386976',
        headers={
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36'
        },
        cookies=r1_cookie_dict
    )
    print(r1.text)

    输出结果如下:

    另外如果想在网站上看到点赞的效果,请先登录账号。

  • 相关阅读:
    setup-nginx
    Sql Server
    第一次找工作
    JGroups 初探
    游戏与彩票
    MINA 网络黏包处理代码
    powershell遍历文件夹设置权限,解决文件无法删除的问题。
    c# 异步任务队列(可选是否使用单线程执行任务,以及自动取消任务)
    c#注册表对象映射
    最小安装centos 7 无GUI静默安装 oracle 12c,打造轻量linux化服务器
  • 原文地址:https://www.cnblogs.com/Black-rainbow/p/9215616.html
Copyright © 2020-2023  润新知