from requests import Response,Session from re import search from json import dumps headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 Edg/105.0.1343.42' } s=Session() def chk(resp:Response): if resp.status_code != 200: print("Error: %d" % resp.status_code) exit(1) return resp.text def get(url,**kwargs): ret = s.get(url,allow_redirects=False,headers=headers,**kwargs) jar = ret.cookies if ret.status_code == 302: url2 = ret.headers['Location'] return get(url2, cookies=jar) elif ret.status_code != 200: print("Error: %d" % ret.status_code) exit(1) return ret def login(username, password): # 问卷星竟然明文发送密码 ret = chk(s.get("https://www.wjx.cn/login.aspx")) v1 = search('(?<=())',ret) if v1 is not None: v1 = v1.group() v2 = search('(?<=())',ret) if v2 is not None: v2 = v2.group() v3 = search('(?<=())',ret) if v3 is not None: v3 = v3.group() print(v1,v2,v3) with open("tmp.html", "w",encoding="utf-8") as f: print(ret,file=f) d={ "__VIEWSTATE": v1, "__VIEWSTATEGENERATOR": v2, "__EVENTVALIDATION": v3, "UserName": username, "Password": password, "LoginButton": "登录" } # d={ # "__VIEWSTATE": "/wEPDwULLTIxMTQ1NzY4NzFkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBQpSZW1lbWJlck1ldLwU4qgz33Rji8zou8eAENNib4k=", # "__VIEWSTATEGENERATOR":"C2EE9ABB", # "__EVENTVALIDATION": "/wEdAAfxrqR6nVOy3mBYlwdwNQ3ZR1LBKX1P1xh290RQyTesRRHS0B3lkDg8wcTlzQR027xRgZ0GCHKgt6QG86UlMSuIXArz/WCefbk6V2VE3Ih52ScdcjStD50aK/ZrfWs/uQXcqaj6i4HaaYTcyD0yJuxuNMxKZaXzJnI0VXVv9OL2HZrk5tk=", # "UserName": username, # "Password": password, # "LoginButton": "登录" # } ret = s.post("https://www.wjx.cn/Login.aspx",json=dumps(d)) ret.raise_for_status() def getlist(id): ret = s.get( "https://www.wjx.cn/wjx/activitystat/viewstatsummary.aspx", params={"activity":id}, headers=headers ) ret = chk(ret) find = search(r'(?<=(var ids = "))[\d,]+(?=(";))',ret) assert find is not None,ret return find.group().split(",") if __name__ == "__main__": login("flt","***REMOVED***") print(s.cookies) print(getlist("184412487"))