1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > pc端客户端爬虫_爬虫微博模拟登陆-从移动端到PC端

pc端客户端爬虫_爬虫微博模拟登陆-从移动端到PC端

时间:2022-04-10 01:52:24

相关推荐

pc端客户端爬虫_爬虫微博模拟登陆-从移动端到PC端

爬虫登陆微博,相信是诸多爬虫爱好者必须跨过得一道坎。这不,这几天我也在研究如何能够快速而简洁得实现登陆功能。

当然,前期工作一定要做好,我先google + 百度了一把市面上的微博登陆教程,发现基本上都是PC端的base64加密用户名,然后RSA加密拼接关键信息,最后组合成POST的from data 进行登陆。

摆在我面前的有两条路,一条走PC端,一条走移动端。鉴于PC端已经有详尽教程,此时,我决定走一走移动端的路子。基于以往经验,任何网站如果有移动端,那一定是非常容易进行爬取的。果不其然,移动端的微博登陆比我想象得还要简单,一个简单的POST即可搞定。

与此同时,在抓包的过程中,我亦发现,微博在移动端登陆以后,会先访问3个cross domain的网址来设置cookie。此刻,请大家注意,经过这三个cross domain的设置后,我们居然可以直接以登陆状态访问PC端。即在技术上以移动端作为翘板,完美避开PC端复杂的校验和加密。

曲线救国,古之人诚不我欺也!

Talk is cheap. Show me the code。

#-*- coding=utf-8

from requests import Session

import json

def formatUrl(urldict):

for key,value in urldict.items():

urldict[key]=value.replace("\\",'')

headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36',

'Referer':'/signin/login?entry=mweibo'}

cookies={'_s_tentry':'',

'UOR':',,'}

url='/sso/login'

username=input('pls input weibo ID: ')

pwd =input('pls input weibo password: ')

fromdata={'username':username,'password':pwd,

'savestate':'1','r':None,'ec':'0','pagerefer':None,

'entry':'mweibo','wentry':None,'loginfrom':None,

'client_id':None,'code':None,'qq':None,'mainpageflag':'1',

'hff':None,'hfp':None}

with Session() as s:

s.headers.update(headers)

resp = s.post(url,data=fromdata)

cross_domain_list = json.loads(resp.text)['data']['crossdomainlist']

formatUrl(cross_domain_list)

s.get(cross_domain_list[''],cookies=cookies)

#通过cross_domain 获取PC端的登陆状态,此时可以以登录状态直接访问PC端的页面,从而绕过诸多加密校验

s.get(cross_domain_list[''])

s.get(cross_domain_list[''])

s.headers.update({'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8'})

resp=s.get('/')

with open('webo.html','wb') as f:

f.write(resp.content)

我宣布:微博的世界, 爬虫大军来啦!

注:如果需要锻炼JS解析能力,建议还是走PC端模拟登陆。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。