4399全自动登陆取cookie
- python
- 2023-12-24
- 261热度
- 0评论
import execjs
import requests
import ddddocr
import re
import time
import threading
def get_img(username, password):
url = "http://ptlogin.4399.com/ptlogin/loginFrame.do?postLoginHandler=default&redirectUrl=&displayMode=popup&css=&appId=www_home&gameId=&username=qazx86523553&externalLogin=qq&password=&mainDivId=popup_login_div&autoLogin=false&includeFcmInfo=false&qrLogin=true&userNameLabel=4399%E7%94%A8%E6%88%B7%E5%90%8D&userNameTip=%E8%AF%B7%E8%BE%93%E5%85%A54399%E7%94%A8%E6%88%B7%E5%90%8D&welcomeTip=%E6%AC%A2%E8%BF%8E%E5%9B%9E%E5%88%B04399&level=0®Level=4&v=1701267999248"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0"
}
res = requests.post(url, headers=headers)
ls = []
ls.extend(re.findall(r'sessionId" value="(.*?)" />', res.content.decode()))
sessionid = ls[0]
img_url = "https://ptlogin.4399.com/ptlogin/captcha.do?captchaId=" + str(sessionid)
headers = {
"Accept": "image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
"Connection": "keep-alive",
"Cookie": '_4399stats_vid=1682246116137431; Qnick=; _gprp_c=""; Hm_lvt_334aca66d28b3b338a76075366b2b9e8=1689257991; index4399skin=0; _4399tongji_vid=168925817866036; ptusertype=huodong.4399_login; Puser=1104026885; Pnick=%E8%81%BF%E8%81%BF%EF%BC%8D; USESSIONID=7ac8d01b-875c-4866-bc9f-892615aa7335; phlogact=l13014',
"Host": "ptlogin.4399.com",
"Referer": "http://ptlogin.4399.com/ptlogin/loginFrame.do?postLoginHandler=refreshParent&redirectUrl=&displayMode=popup&css=&bizId=&appId=huodong&gameId=&username=1104026885&externalLogin=qq&password=&mainDivId=popup_login_div&autoLogin=true&includeFcmInfo=false&qrLogin=false&userNameLabel=4399%E7%94%A8%E6%88%B7%E5%90%8D&userNameTip=%E8%AF%B7%E8%BE%93%E5%85%A54399%E7%94%A8%E6%88%B7%E5%90%8D&welcomeTip=%E6%AC%A2%E8%BF%8E%E5%9B%9E%E5%88%B04399&level=0®Level=0&v=1692147013751",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.203",
}
img_res = requests.post(img_url, headers=headers).content
ocr = ddddocr.DdddOcr()
checkcode = ocr.classification(img_res)
print("识别出的验证码为:" + checkcode)
url = "https://ptlogin.4399.com/ptlogin/login.do?v=1"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0"
}
data = {
"loginFrom": "uframe",
"postLoginHandler": "default",
"layoutSelfAdapting": "true",
"externalLogin": "qq",
"displayMode": "popup",
"layout": "vertical",
"bizId": "",
"appId": "www_home",
"gameId": "",
"css": "",
"redirectUrl": "",
"sessionId": "",
"mainDivId": "popup_login_div",
"includeFcmInfo": "false",
"level": "0",
"regLevel": "4",
"userNameLabel": "4399用户名",
"userNameTip": "请输入4399用户名",
"welcomeTip": "欢迎回到4399",
"sec": "1",
"password": password,
"username": username,
"autoLogin": "on",
"inputCaptcha": checkcode,
"sessionId": sessionid,
}
res = requests.post(url, data=data, headers=headers)
cookies = res.cookies
flag1 = False
for cookie in cookies:
if cookie.name == "ck_accname":
flag1 = True
if flag1 == True:
print("登陆成功!" + "\n取回cookie:")
ck = ""
for cookie in cookies:
ck += cookie.name + ":" + cookie.value
return ck
else:
print("登录失败,触发图片验证码验证登陆模式!")
return get_img(username, password)
def _4399login(username_, password_):
f = open(r"D:\python项目\requests相关\4399login\aes.js")
js = f.read()
f.close()
ctx = execjs.compile(js)
username = str(username_)
password = ctx.call("encryptAES", str(password_))
print(password)
url1 = "https://ptlogin.4399.com/ptlogin/login.do?v=1"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0"
}
data = {
"loginFrom": "uframe",
"postLoginHandler": "default",
"layoutSelfAdapting": "true",
"externalLogin": "qq",
"displayMode": "popup",
"layout": "vertical",
"bizId": "",
"appId": "www_home",
"gameId": "",
"css": "",
"redirectUrl": "",
"sessionId": "",
"mainDivId": "popup_login_div",
"includeFcmInfo": "false",
"level": "0",
"regLevel": "4",
"userNameLabel": "4399用户名",
"userNameTip": "请输入4399用户名",
"welcomeTip": "欢迎回到4399",
"sec": "1",
"password": password,
"username": username,
"autoLogin": "on",
}
res = requests.post(url1, data=data, headers=headers)
cookies = res.cookies
flag = False
for cookie in cookies:
if cookie.name == "ck_accname":
flag = True
if flag == True:
print("登陆成功!" + "\n取回cookie:")
ck = ""
for cookie in cookies:
ck += cookie.name + ":" + cookie.value
return ck
else:
print("登录失败,触发图片验证码验证登陆模式!")
return get_img(username, password)
def thread_(uid, psd):
ck = _4399login(uid, psd)
print(ck)
cookie.append(ck)
if __name__ == "__main__":
t1 = time.time()
f = open(r"D:\seer\赛尔脱机\NL_SDK\非DLL项目\4399main\2022-06-11.txt")
data = f.read().split("\n")
accounts = []
cookie = []
for i in data:
de = {}
de["username"] = i.split("=")[0]
de["password"] = i.split("=")[1]
accounts.append(de)
threads = []
for account in accounts:
thread = threading.Thread(
target=thread_, args=(account["username"], account["password"])
)
threads.append(thread)
for thread in threads:
thread.start()
time.sleep(0.1)
for thread in threads:
thread.join()
fi = open(r"D:\seer\赛尔脱机\NL_SDK\非DLL项目\4399main\2023-11-30_cookies.txt", "w")
for k in cookie:
fi.write(k + "\n")
f.close()
fi.close()
t2 = time.time()
worktime = t2 - t1
print(f"取回完成!用时{worktime}秒")