我们先登陆抽屉账号
然后打开控制台,仔细观察变化,通常只需要观察最底部的变化
再往下翻,并没有看到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)
输出结果如下:
另外如果想在网站上看到点赞的效果,请先登录账号。