获取登陆所需的其他参数

这样的登陆获取的参数类型比较多,但基本都是登陆前页面里面的数据,全局搜索一下就可以找到。

这里就举一个我常见的。

同样登陆前开fiddler抓包,登陆后全局搜索:

可以看到登陆提交的参数贼多


然后随便复制一个值90A550F9,再次全局搜索


看到了两个高亮,一个是登陆时提交的,一个就是产生的页面了


在第一请求里搜索一下就可以看见那个值了,其他参数同理可得。

于是可以写代码了

self.session = self.gen_session()
login_text = self.session.get('http://***.***.7.114/LogForm.aspx').text
selector = Selector(text=login_text)
EVENTVALIDATION = selector.xpath('//input[@id="__EVENTVALIDATION"]/@value').extract_first()
VIEWSTATE = selector.xpath('//input[@id="__VIEWSTATE"]/@value').extract_first()
VIEWSTATEGENERATOR = selector.xpath('//input[@id="__VIEWSTATEGENERATOR"]/@value').extract_first()
headers = {
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
    "Accept-Encoding": "gzip, deflate",
    "Accept-Language": "zh-CN,zh;q=0.8",
    "Content-Type": "application/x-www-form-urlencoded",
    "Proxy-Connection": "keep-alive",
    "Referer": "http://61.155.7.114/LogForm.aspx",
    "Upgrade-Insecure-Requests": "1",
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0",
}
data = {
    "__LASTFOCUS": "",
    "__VIEWSTATE": VIEWSTATE,
    "__VIEWSTATEGENERATOR": VIEWSTATEGENERATOR,
    "__EVENTTARGET": "",
    "__EVENTARGUMENT": "",
    "__EVENTVALIDATION": EVENTVALIDATION,
    "txtCommpnayAccount": self.companyID,
    "txtWorkNO": self.user_name,
    "txtPWD": self.pass_word,
    "cbRmbPWD": "on",
    "hidBodyHeight": "483",
    "btnLogin": "",
}
r = self.session.post(self.login_url, headers=headers, data=data)

这里提取参数时使用了scrapy中的Selector,感觉挺好用的,尤其是封装的extract_first(),还可以设置默认值,相比于lxml少做了一些判断

猜你喜欢

转载自blog.csdn.net/fsh_walwal/article/details/80696267