proxy for inbox.lv
This commit is contained in:
@@ -41,11 +41,19 @@ GMX_DOMAINS = (
|
|||||||
"gmx.fr", "gmx.us", "gmx.sg", "gmx.ch", "gmx.pt",
|
"gmx.fr", "gmx.us", "gmx.sg", "gmx.ch", "gmx.pt",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# 需要通过代理读取的域名列表
|
||||||
|
PROXY_DOMAINS = GMX_DOMAINS + ("inbox.lv",)
|
||||||
|
|
||||||
|
|
||||||
def is_gmx_account(login: str) -> bool:
|
def is_gmx_account(login: str) -> bool:
|
||||||
"""判断邮箱是否属于GMX域名"""
|
"""判断邮箱是否属于GMX域名"""
|
||||||
return any(d in login.lower() for d in GMX_DOMAINS)
|
return any(d in login.lower() for d in GMX_DOMAINS)
|
||||||
|
|
||||||
|
|
||||||
|
def is_proxy_account(login: str) -> bool:
|
||||||
|
"""判断邮箱是否需要通过代理读取(GMX 或 inbox.lv)"""
|
||||||
|
return any(d in login.lower() for d in PROXY_DOMAINS)
|
||||||
|
|
||||||
# 邮箱列表(简化为常量)
|
# 邮箱列表(简化为常量)
|
||||||
REDIRECTION_MAILS = "appointment2022@aol.com, chenpeijun@aol.com,hongjiang176@aol.com,ciyuexie@aol.com,rutger.62@aol.com,ciccidaniel@aol.com,armasgoodman@aol.com,wknd.gemerine@aol.com,rafmail1981@aol.com,tonovichivanenaki@aol.com,hetland.ari@aol.com,mateusiversen@aol.com,lacerdaraffaello@aol.com,anasida76@aol.com,liamolinari@aol.com,sen70zib@aol.com,mezeiderrick@aol.com,stanisl49avchic@aol.com,damcvrobaneuron@aol.com,suyzanna_fleona@aol.com,dxealing.dissa@aol.com,hogg.karen@aol.com,obocharovamarina@aol.com,buchholzjohann@aol.com,orn.cecchini@aol.com,percivaltorgersen@aol.com,candalgudrun@aol.com,filimonis.76@aol.com,bengann_100@aol.com,axelhanne@aol.com,tiffanylarochelle@aol.com,nicoleta.r@aol.com,eichenbaum.1963@aol.com,kotensasharev@aol.com,samognat32@aol.com,edem_headshot@aol.com,kozmakuzmich1960@aol.com,damonsvensson@aol.com,anders.riva@aol.com,caiminwei123@gmail.com,yulingguo086@gmail.com,yingxiaolu086@gmail.com,lijiazhen0035@gmail.com,fangp370@gmail.com,huangyayu10086@gmail.com,fuziyuan110@gmail.com,xinyingdu886@gmail.com,yasiaforever.1971@aol.com,lukaszfidalgo@aol.com,zaichi29@aol.com,prostotakitak.1974@aol.com,mo90nroe@aol.com,blonde.87@aol.com,dimidrol.1969@aol.com"
|
REDIRECTION_MAILS = "appointment2022@aol.com, chenpeijun@aol.com,hongjiang176@aol.com,ciyuexie@aol.com,rutger.62@aol.com,ciccidaniel@aol.com,armasgoodman@aol.com,wknd.gemerine@aol.com,rafmail1981@aol.com,tonovichivanenaki@aol.com,hetland.ari@aol.com,mateusiversen@aol.com,lacerdaraffaello@aol.com,anasida76@aol.com,liamolinari@aol.com,sen70zib@aol.com,mezeiderrick@aol.com,stanisl49avchic@aol.com,damcvrobaneuron@aol.com,suyzanna_fleona@aol.com,dxealing.dissa@aol.com,hogg.karen@aol.com,obocharovamarina@aol.com,buchholzjohann@aol.com,orn.cecchini@aol.com,percivaltorgersen@aol.com,candalgudrun@aol.com,filimonis.76@aol.com,bengann_100@aol.com,axelhanne@aol.com,tiffanylarochelle@aol.com,nicoleta.r@aol.com,eichenbaum.1963@aol.com,kotensasharev@aol.com,samognat32@aol.com,edem_headshot@aol.com,kozmakuzmich1960@aol.com,damonsvensson@aol.com,anders.riva@aol.com,caiminwei123@gmail.com,yulingguo086@gmail.com,yingxiaolu086@gmail.com,lijiazhen0035@gmail.com,fangp370@gmail.com,huangyayu10086@gmail.com,fuziyuan110@gmail.com,xinyingdu886@gmail.com,yasiaforever.1971@aol.com,lukaszfidalgo@aol.com,zaichi29@aol.com,prostotakitak.1974@aol.com,mo90nroe@aol.com,blonde.87@aol.com,dimidrol.1969@aol.com"
|
||||||
|
|
||||||
@@ -114,8 +122,8 @@ class MailReader:
|
|||||||
|
|
||||||
def read_emails(self, mails_messages: List[MailPojo]) -> List[MailPojo]:
|
def read_emails(self, mails_messages: List[MailPojo]) -> List[MailPojo]:
|
||||||
"""读取邮件"""
|
"""读取邮件"""
|
||||||
# ── GMX账户 → 使用代理连接(失败自动重试最多3次)──
|
# ── GMX / inbox.lv 账户 → 使用代理连接(失败自动重试最多3次)──
|
||||||
if is_gmx_account(self.login) and self.proxy is not None:
|
if is_proxy_account(self.login) and self.proxy is not None:
|
||||||
return self._read_emails_with_proxy_retry(mails_messages)
|
return self._read_emails_with_proxy_retry(mails_messages)
|
||||||
else:
|
else:
|
||||||
return self._read_emails_internal(create_imap(self.login), mails_messages)
|
return self._read_emails_internal(create_imap(self.login), mails_messages)
|
||||||
@@ -125,13 +133,13 @@ class MailReader:
|
|||||||
mails_messages: List[MailPojo],
|
mails_messages: List[MailPojo],
|
||||||
max_retries: int = 8,
|
max_retries: int = 8,
|
||||||
) -> List[MailPojo]:
|
) -> List[MailPojo]:
|
||||||
"""通过 ProxyIMAPClient 读取 GMX 邮件,失败时最多重试 max_retries 次。"""
|
"""通过 ProxyIMAPClient 读取邮件(GMX / inbox.lv),失败时最多重试 max_retries 次。"""
|
||||||
imap_server = get_imap_server(self.login)
|
imap_server = get_imap_server(self.login)
|
||||||
last_error: Optional[Exception] = None
|
last_error: Optional[Exception] = None
|
||||||
|
|
||||||
for attempt in range(1, max_retries + 1):
|
for attempt in range(1, max_retries + 1):
|
||||||
try:
|
try:
|
||||||
print("[GMX-Proxy] {} → {} via {} (tentative {}/{})".format(
|
print("[Proxy] {} → {} via {} (tentative {}/{})".format(
|
||||||
self.login, imap_server, self.proxy, attempt, max_retries))
|
self.login, imap_server, self.proxy, attempt, max_retries))
|
||||||
imap = ProxyIMAPClient(
|
imap = ProxyIMAPClient(
|
||||||
host=imap_server,
|
host=imap_server,
|
||||||
@@ -143,10 +151,10 @@ class MailReader:
|
|||||||
return self._read_emails_internal(imap, mails_messages)
|
return self._read_emails_internal(imap, mails_messages)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
last_error = exc
|
last_error = exc
|
||||||
print("[GMX-Proxy] Échec tentative {}/{} pour {} : {}".format(
|
print("[Proxy] Échec tentative {}/{} pour {} : {}".format(
|
||||||
attempt, max_retries, self.login, exc))
|
attempt, max_retries, self.login, exc))
|
||||||
|
|
||||||
print("[GMX-Proxy] Toutes les tentatives ont échoué pour {} : {}".format(
|
print("[Proxy] Toutes les tentatives ont échoué pour {} : {}".format(
|
||||||
self.login, last_error))
|
self.login, last_error))
|
||||||
self.failed_gmx_list.append(self.login)
|
self.failed_gmx_list.append(self.login)
|
||||||
return []
|
return []
|
||||||
@@ -446,13 +454,13 @@ def find_links_to_validate_from_mail_list(
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("Error processing mail: {},login: {}, password: {}".format(e,mail.mail, mail.password))
|
print("Error processing mail: {},login: {}, password: {}".format(e,mail.mail, mail.password))
|
||||||
|
|
||||||
# ── Résumé des comptes GMX en échec ──────────────────────
|
# ── Résumé des comptes proxy en échec ──────────────────────
|
||||||
if failed_gmx:
|
if failed_gmx:
|
||||||
print("\n[GMX-Proxy] ⚠️ {} compte(s) GMX non lus :".format(len(failed_gmx)))
|
print("\n[Proxy] ⚠️ {} compte(s) non lus (GMX / inbox.lv) :".format(len(failed_gmx)))
|
||||||
for addr in failed_gmx:
|
for addr in failed_gmx:
|
||||||
print(" ✗ {}".format(addr))
|
print(" ✗ {}".format(addr))
|
||||||
else:
|
else:
|
||||||
print("\n[GMX-Proxy] ✅ Tous les comptes GMX ont été lus avec succès.")
|
print("\n[Proxy] ✅ Tous les comptes GMX / inbox.lv ont été lus avec succès.")
|
||||||
|
|
||||||
# 刷新成功的项目
|
# 刷新成功的项目
|
||||||
_refreshed_successful_items = MONGO_STORE_MANAGER.get_all_successful_items_for_day()
|
_refreshed_successful_items = MONGO_STORE_MANAGER.get_all_successful_items_for_day()
|
||||||
@@ -487,8 +495,8 @@ def find_links_to_validate_from_mail_list(
|
|||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
# 读取联系人列表
|
# 读取联系人列表
|
||||||
contact_to_book_list = read_contacts(
|
contact_to_book_list = read_contacts(
|
||||||
file_name="~/Desktop/contact_list_inbox_lv_100.xlsx")
|
# file_name="~/Desktop/contact_list_inbox_lv_100.xlsx")
|
||||||
# file_name="~/Desktop/contact_list_2026-04-02.xlsx")
|
file_name="~/Desktop/contact_list_2026-04-07.xlsx")
|
||||||
# file_name="~/Desktop/contact_list_2026-04-01.xlsx")
|
# file_name="~/Desktop/contact_list_2026-04-01.xlsx")
|
||||||
# file_name="~/Desktop/contact_list_2026-03-28.xlsx")
|
# file_name="~/Desktop/contact_list_2026-03-28.xlsx")
|
||||||
# file_name="~/Desktop/contact_list_2025-11-28.xlsx")
|
# file_name="~/Desktop/contact_list_2025-11-28.xlsx")
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ class ProxyManager:
|
|||||||
return [FR_PROXY_RES_OXY, FR_PROXY_ASOCK_RES_2, FR_DATA_IMPULSE_RES, FR_ASOCKS_MOBILE_PROXY]
|
return [FR_PROXY_RES_OXY, FR_PROXY_ASOCK_RES_2, FR_DATA_IMPULSE_RES, FR_ASOCKS_MOBILE_PROXY]
|
||||||
|
|
||||||
def get_proxy_for_appointment_request(self) -> dict:
|
def get_proxy_for_appointment_request(self) -> dict:
|
||||||
# return self.get_random_sticky_iproyal_proxy()
|
return self.get_random_sticky_iproyal_proxy()
|
||||||
_chosen_proxy = random.choice(MOBILE_PROXY_LIST)
|
_chosen_proxy = random.choice(MOBILE_PROXY_LIST)
|
||||||
if "oxylabs" in _chosen_proxy["http"]:
|
if "oxylabs" in _chosen_proxy["http"]:
|
||||||
self.logger.info("use oxylabs proxy")
|
self.logger.info("use oxylabs proxy")
|
||||||
|
|||||||
Reference in New Issue
Block a user