1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
|
import urllib3 import re import requests from urllib import request as RR import json from retrying import retry from bs4 import BeautifulSoup urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9" }
def load_txt(): user_list = [] server_list = [] git_list = [] f = open(r'配置.txt', 'r', encoding='utf-8') data = f.readlines() for i in range(len(data)): if data[i] != r'******author:dota_st******': user_line = data[i].split(r"user=")[1].split("#")[0] server_line = data[i].split(r"server_key=")[1].split("#")[0] git_line = data[i].split(r"git_cookie=")[1].split("#")[0] user_list.append(user_line) server_list.append(server_line) git_list.append(git_line) else: break return user_list, server_list, git_list
def server_send(user_line, server_line, message): data = {'desp': message} server_key = server_line requests.post("https://sc.ftqq.com/"+server_key+".send?text=尊贵的"+user_line+"用户bugku自动签到脚本结果", data=data)
def login_result(user_line, server_line, bug_cookie): global headers headers['X-Requested-With'] = "XMLHttpRequest" headers['cookie'] = bug_cookie req = RR.Request(url='https://ctf.bugku.com/user/checkin', headers=headers) with RR.urlopen(req) as f: Data = f.read() data = json.loads(Data) print(data['msg']) server_send(user_line, server_line, data['msg'])
def login_status(user_line, server_line,res): if ("登录成功" in res.text): print("cookie提取成功!") for i in res.headers['Set-Cookie'].split(','): if ('PHPSESSID' in i): login_result(user_line, server_line, i.strip()) break
@retry(stop_max_attempt_number=3) def main_fun(user_line, server_line, git_line): headers = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9" } keep = requests.Session() div = BeautifulSoup(keep.get("https://ctf.bugku.com/login".rstrip(), headers=headers, verify=False).text, 'lxml') git_url = div.find('a', class_='btn btn-floating btn-github')['href'] git_cookie = 'user_session={git_line1}; __Host-user_session_same_site={git_line2};'.format(git_line1=git_line, git_line2=git_line ) headers['cookie'] = git_cookie flag = keep.get("https://github.com/settings/profile", headers=headers, verify=False, allow_redirects=False) if(flag.status_code!= 200): server_send(user_line, server_line, "github的cookie失效了噢!") res = keep.get(git_url, headers=headers, verify=False) login_status(user_line,server_line, res) if("github.githubassets.com" in res.text): print(res.text) choose = res.text.split('<form action="')[1].split('<input type="hidden" name="scope"')[0] rule = re.compile('name="(.*?)".*?value="(.*?)"') form_data = rule.findall(choose) Data = {} for i in form_data: Data[i[0]] = i[1] Data['authorize'] = 1 formurl = "https://github.com" + choose.split('"')[0] headers = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36", "cookie": git_url } res = keep.post(formurl, data=Data, headers=headers, verify=False) login_status(user_line,server_line, res) elif("登录成功" not in res.text): server_send(user_line, server_line, "超时错误") keep.cookies.clear() keep.close()
def main(): user_list, server_list, git_list = load_txt() for i in range(len(user_list)): main_fun(user_list[i], server_list[i], git_list[i])
if __name__ == '__main__': main()
|