自动登陆抽屉并点赞(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)

输出结果如下:

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

猜你喜欢

转载自www.cnblogs.com/Black-rainbow/p/9215616.html