-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkukulu.py
54 lines (47 loc) · 2.79 KB
/
kukulu.py
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
import requests
from bs4 import BeautifulSoup
import re
class KukuluError(Exception):
pass
class Kukulu():
def __init__(self,csrf_token:str=None,sessionhash:str=None,proxy:dict=None):
self.csrf_token=csrf_token
self.sessionhash=sessionhash
self.proxy=proxy
self.session=requests.Session()
if csrf_token!=None and sessionhash!=None:
self.session.cookies.set("cookie_csrf_token",csrf_token)
self.session.cookies.set("cookie_sessionhash",sessionhash)
self.session.post("https://m.kuku.lu",proxies=proxy)
else:
self.session.post("https://m.kuku.lu",proxies=proxy)
self.csrf_token=self.session.cookies["cookie_csrf_token"]
self.sessionhash=self.session.cookies["cookie_sessionhash"]
def new_account(self):
return {"csrf_token":self.session.cookies["cookie_csrf_token"],"sessionhash":self.session.cookies["cookie_sessionhash"]}
def create_mailaddress(self):
return self.session.get("https://m.kuku.lu/index.php?action=addMailAddrByAuto&nopost=1&by_system=1",proxies=self.proxy).text[3:]
def specify_address(self,address:str):
return self.session.get(f"https://m.kuku.lu/index.php?action=addMailAddrByManual&nopost=1&by_system=1&t=1716696234&csrf_token_check={self.csrf_token}&newdomain={address}",proxies=self.proxy).text[3:]
def check_top_mail(self,mailaddress:str):
mailaddress=mailaddress.replace("@","%40")
mails=self.session.get(f"https://m.kuku.lu/recv._ajax.php?&q={mailaddress}&&nopost=1&csrf_token_check={self.csrf_token}",proxies=self.proxy)
soup=BeautifulSoup(mails.text,"html.parser")
script=soup.find_all("script")
match = re.search("(openMailData[^ ]+)", str(script))
try:
openMailData=match.group()
except:
raise KukuluError("受信メールはありません")
openMailData=openMailData.replace("openMailData(","")
match2=re.findall(f"{openMailData} [^ ]+", str(script))
maildata=match2[1].split("'")
mail=self.session.post("https://m.kuku.lu/smphone.app.recv.view.php",data={"num":maildata[1],"key":maildata[3],"noscroll": "1"},proxies=self.proxy)
soup=BeautifulSoup(mail.text,"html.parser")
title=soup.find(class_="full").text
#--------------------------------------------
#ここの部分は届くメールによってよく変わるから注意
text=soup.find(dir="ltr").text
#m.kuku.luは便利だけど自動化するにあたっては他のプラットフォームの方がいい可能性アリ
#----------------------------------------------------------------------------
return {"title":title[7:-4],"text":text}