can exchange cookies
This commit is contained in:
+169
-142
@@ -1,6 +1,10 @@
|
||||
from typing import Any
|
||||
from dataclasses import dataclass
|
||||
import json
|
||||
import random
|
||||
import time
|
||||
import urllib
|
||||
from dataclasses import dataclass
|
||||
|
||||
import jsonpickle
|
||||
|
||||
|
||||
@dataclass
|
||||
@@ -131,144 +135,167 @@ class JsDataPojo:
|
||||
wwl: bool
|
||||
jset: int
|
||||
|
||||
@staticmethod
|
||||
def from_dict(obj: Any) -> 'JsDataPojo':
|
||||
_opts = str(obj.get("opts"))
|
||||
_ttst = int(obj.get("ttst"))
|
||||
_ifov = False
|
||||
_hc = int(obj.get("hc"))
|
||||
_br_oh = int(obj.get("br_oh"))
|
||||
_br_ow = int(obj.get("br_ow"))
|
||||
_ua = str(obj.get("ua"))
|
||||
_wbd = False
|
||||
_tagpu = float(obj.get("tagpu"))
|
||||
_wdif = False
|
||||
_wdifrm = False
|
||||
_npmtm = False
|
||||
_br_h = int(obj.get("br_h"))
|
||||
_br_w = int(obj.get("br_w"))
|
||||
_isf =
|
||||
_nddc = int(obj.get("nddc"))
|
||||
_rs_h = int(obj.get("rs_h"))
|
||||
_rs_w = int(obj.get("rs_w"))
|
||||
_rs_cd = int(obj.get("rs_cd"))
|
||||
_phe =
|
||||
_nm =
|
||||
_jsf =
|
||||
_lg = str(obj.get("lg"))
|
||||
_pr = int(obj.get("pr"))
|
||||
_ars_h = int(obj.get("ars_h"))
|
||||
_ars_w = int(obj.get("ars_w"))
|
||||
_tz = int(obj.get("tz"))
|
||||
_str_ss =
|
||||
_str_ls =
|
||||
_str_idb =
|
||||
_str_odb =
|
||||
_plgod =
|
||||
_plg = int(obj.get("plg"))
|
||||
_plgne = str(obj.get("plgne"))
|
||||
_plgre = str(obj.get("plgre"))
|
||||
_plgof = str(obj.get("plgof"))
|
||||
_plggt = str(obj.get("plggt"))
|
||||
_pltod =
|
||||
_hcovdr =
|
||||
_hcovdr2 =
|
||||
_plovdr =
|
||||
_plovdr2 =
|
||||
_ftsovdr =
|
||||
_ftsovdr2 =
|
||||
_lb =
|
||||
_eva = int(obj.get("eva"))
|
||||
_lo =
|
||||
_ts_mtp = int(obj.get("ts_mtp"))
|
||||
_ts_tec =
|
||||
_ts_tsa =
|
||||
_vnd = str(obj.get("vnd"))
|
||||
_bid = str(obj.get("bid"))
|
||||
_mmt = str(obj.get("mmt"))
|
||||
_plu = str(obj.get("plu"))
|
||||
_hdn =
|
||||
_awe =
|
||||
_geb =
|
||||
_dat =
|
||||
_med = str(obj.get("med"))
|
||||
_aco = str(obj.get("aco"))
|
||||
_acots =
|
||||
_acmp = str(obj.get("acmp"))
|
||||
_acmpts =
|
||||
_acw = str(obj.get("acw"))
|
||||
_acwts =
|
||||
_acma = str(obj.get("acma"))
|
||||
_acmats =
|
||||
_acaa = str(obj.get("acaa"))
|
||||
_acaats =
|
||||
_ac3 = str(obj.get("ac3"))
|
||||
_ac3ts =
|
||||
_acf = str(obj.get("acf"))
|
||||
_acfts =
|
||||
_acmp4 = str(obj.get("acmp4"))
|
||||
_acmp4ts =
|
||||
_acmp3 = str(obj.get("acmp3"))
|
||||
_acmp3ts =
|
||||
_acwm = str(obj.get("acwm"))
|
||||
_acwmts =
|
||||
_ocpt =
|
||||
_vco = str(obj.get("vco"))
|
||||
_vcots =
|
||||
_vch = str(obj.get("vch"))
|
||||
_vchts =
|
||||
_vcw = str(obj.get("vcw"))
|
||||
_vcwts =
|
||||
_vc3 = str(obj.get("vc3"))
|
||||
_vc3ts =
|
||||
_vcmp = str(obj.get("vcmp"))
|
||||
_vcmpts =
|
||||
_vcq = str(obj.get("vcq"))
|
||||
_vcqts =
|
||||
_vc1 = str(obj.get("vc1"))
|
||||
_vc1ts =
|
||||
_dvm = int(obj.get("dvm"))
|
||||
_sqt =
|
||||
_so = str(obj.get("so"))
|
||||
_wdw =
|
||||
_cokys = str(obj.get("cokys"))
|
||||
_ecpc =
|
||||
_lgs =
|
||||
_lgsod =
|
||||
_psn =
|
||||
_edp =
|
||||
_addt =
|
||||
_wsdc =
|
||||
_ccsr =
|
||||
_nuad =
|
||||
_bcda =
|
||||
_idn =
|
||||
_capi =
|
||||
_svde =
|
||||
_vpbq =
|
||||
_ucdv =
|
||||
_spwn =
|
||||
_emt =
|
||||
_bfr =
|
||||
_dbov =
|
||||
_cfpfe = str(obj.get("cfpfe"))
|
||||
_stcfp = str(obj.get("stcfp"))
|
||||
_ckwa =
|
||||
_glvd = str(obj.get("glvd"))
|
||||
_glrd = str(obj.get("glrd"))
|
||||
_wwl =
|
||||
_jset = int(obj.get("jset"))
|
||||
return Root(_opts, _ttst, _ifov, _hc, _br_oh, _br_ow, _ua, _wbd, _tagpu, _wdif, _wdifrm, _npmtm, _br_h, _br_w,
|
||||
_isf, _nddc, _rs_h, _rs_w, _rs_cd, _phe, _nm, _jsf, _lg, _pr, _ars_h, _ars_w, _tz, _str_ss, _str_ls,
|
||||
_str_idb, _str_odb, _plgod, _plg, _plgne, _plgre, _plgof, _plggt, _pltod, _hcovdr, _hcovdr2,
|
||||
_plovdr, _plovdr2, _ftsovdr, _ftsovdr2, _lb, _eva, _lo, _ts_mtp, _ts_tec, _ts_tsa, _vnd, _bid, _mmt,
|
||||
_plu, _hdn, _awe, _geb, _dat, _med, _aco, _acots, _acmp, _acmpts, _acw, _acwts, _acma, _acmats,
|
||||
_acaa, _acaats, _ac3, _ac3ts, _acf, _acfts, _acmp4, _acmp4ts, _acmp3, _acmp3ts, _acwm, _acwmts,
|
||||
_ocpt, _vco, _vcots, _vch, _vchts, _vcw, _vcwts, _vc3, _vc3ts, _vcmp, _vcmpts, _vcq, _vcqts, _vc1,
|
||||
_vc1ts, _dvm, _sqt, _so, _wdw, _cokys, _ecpc, _lgs, _lgsod, _psn, _edp, _addt, _wsdc, _ccsr, _nuad,
|
||||
_bcda, _idn, _capi, _svde, _vpbq, _ucdv, _spwn, _emt, _bfr, _dbov, _cfpfe, _stcfp, _ckwa, _glvd,
|
||||
_glrd, _wwl, _jset)
|
||||
def __init__(self, glrd, glvd, hc, br_oh, ua, br_ow, br_h, br_w, rs_h, rs_w, rs_cd, ars_h, ars_w, plg, eva, plu,
|
||||
vnd, pr, ts_mtp, dvm):
|
||||
self.opts = "endpoint,ajaxListenerPath"
|
||||
self.ttst = random.randint(38, 94)
|
||||
self.ifov = False
|
||||
self.hc = hc
|
||||
self.br_oh = br_oh
|
||||
self.br_ow = br_ow
|
||||
self.ua = ua
|
||||
self.wbd = False
|
||||
tag_pu = random.uniform(1, 10)
|
||||
while len(str(tag_pu)) != 17:
|
||||
tag_pu = random.uniform(1, 10)
|
||||
self.tagpu = tag_pu
|
||||
self.wdif = False
|
||||
self.wdifrm = False
|
||||
self.npmtm = False
|
||||
self.br_h = br_h
|
||||
self.br_w = br_w
|
||||
self.isf = True
|
||||
self.nddc = 1
|
||||
self.rs_h = rs_h
|
||||
self.rs_w = rs_w
|
||||
self.rs_cd = rs_cd
|
||||
self.phe = False
|
||||
self.nm = False
|
||||
self.jsf = False
|
||||
self.lg = "fr-FR"
|
||||
self.pr = pr
|
||||
self.ars_h = ars_h
|
||||
self.ars_w = ars_w
|
||||
self.tz = -60
|
||||
self.str_ss = True
|
||||
self.str_ls = True
|
||||
self.str_idb = True
|
||||
self.str_odb = True
|
||||
self.plgod = False
|
||||
self.plg = plg
|
||||
self.plgne = "err"
|
||||
self.plgre = "err"
|
||||
self.plgof = "err"
|
||||
self.plggt = "err"
|
||||
self.pltod = False
|
||||
self.hcovdr = False
|
||||
self.hcovdr2 = False
|
||||
self.plovdr = False
|
||||
self.plovdr2 = False
|
||||
self.ftsovdr = False
|
||||
self.ftsovdr2 = False
|
||||
self.lb = False
|
||||
self.eva = eva
|
||||
self.lo = False
|
||||
self.ts_mtp = ts_mtp
|
||||
self.ts_tec = True
|
||||
self.ts_tsa = True
|
||||
self.vnd = vnd
|
||||
self.bid = "NA"
|
||||
self.mmt = "empty"
|
||||
self.plu = str.join(",", plu) if isinstance(plu, list) else plu
|
||||
self.hdn = False
|
||||
self.awe = False
|
||||
self.geb = False
|
||||
self.dat = False
|
||||
self.med = "defined"
|
||||
self.aco = "probably"
|
||||
self.acots = False
|
||||
self.acmp = "probably"
|
||||
self.acmpts = True
|
||||
self.acw = "probably"
|
||||
self.acwts = False
|
||||
self.acma = "maybe"
|
||||
self.acmats = False
|
||||
self.acaa = "probably"
|
||||
self.acaats = True
|
||||
self.ac3 = ""
|
||||
self.ac3ts = False
|
||||
self.acf = "probably"
|
||||
self.acfts = False
|
||||
self.acmp4 = "maybe"
|
||||
self.acmp4ts = False
|
||||
self.acmp3 = "probably"
|
||||
self.acmp3ts = False
|
||||
self.acwm = "maybe"
|
||||
self.acwmts = False
|
||||
self.ocpt = False
|
||||
self.vco = ""
|
||||
self.vcots = False
|
||||
self.vch = "probably"
|
||||
self.vchts = True
|
||||
self.vcw = "probably"
|
||||
self.vcwts = True
|
||||
self.vc3 = "maybe"
|
||||
self.vc3ts = False
|
||||
self.vcmp = ""
|
||||
self.vcmpts = False
|
||||
self.vcq = ""
|
||||
self.vcqts = False
|
||||
self.vc1 = "probably"
|
||||
self.vc1ts = True
|
||||
self.dvm = dvm
|
||||
self.set_default_values()
|
||||
self.glrd = glrd
|
||||
self.glvd = glvd
|
||||
self.wwl = False
|
||||
self.jset = int(time.time())
|
||||
|
||||
# Example Usage
|
||||
# jsonstring = json.loads(myjsonstring)
|
||||
# root = Root.from_dict(jsonstring)
|
||||
def set_default_values(self):
|
||||
self.sqt = False
|
||||
self.so = "portrait-primary"
|
||||
self.wdw = True
|
||||
self.cokys = "bG9hZFRpbWVzY3NpL="
|
||||
self.ecpc = False
|
||||
self.lgs = True
|
||||
self.lgsod = False
|
||||
self.psn = True
|
||||
self.edp = False
|
||||
self.addt = True
|
||||
self.wsdc = True
|
||||
self.ccsr = True
|
||||
self.nuad = True
|
||||
self.bcda = True
|
||||
self.idn = True
|
||||
self.capi = False
|
||||
self.svde = False
|
||||
self.vpbq = True
|
||||
self.ucdv = False
|
||||
self.spwn = False
|
||||
self.emt = False
|
||||
self.bfr = False
|
||||
self.dbov = False
|
||||
self.cfpfe = "ZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudFsnXHg3MVx4NzVceDY1XHg3Mlx4NzlceDUzXHg2NVx4NmNceDY1XHg2M1x4NzRceDZmXHg3MiddKCdceDYyXHg3Mlx4NmZceDc3XHg3M1x4NjVceDcyXHg2Nlx4NmNceDZmXHg3N1x4MmRceDYzXHg2Zlx4NmVceDc0XHg2" # 4.24.1
|
||||
self.stcfp = "Oi8vZC5kaWdpdGFsLmhlcm1lcy90YWdzLmpzOjI6NzYzMDIpCiAgICBhdCB0LmV4cG9ydHMuZGRfYWIgKGh0dHBzOi8vZC5kaWdpdGFsLmhlcm1lcy90YWdzLmpzOjI6OTA2MjIpCiAgICBhdCBodHRwczovL2QuZGlnaXRhbC5oZXJtZXMvdGFncy5qczoyOjUxNzMz" # 4.24.1
|
||||
self.ckwa = True
|
||||
|
||||
def to_url_encoded_json(self):
|
||||
js_str = jsonpickle.encode(self, unpicklable=False).replace(": ", ":").replace(", ", ",")
|
||||
_safe_string = urllib.parse.quote(js_str)
|
||||
return _safe_string
|
||||
|
||||
|
||||
test_data_json = """{"glvd": "Qualcomm", "glrd": "Adreno (TM) 630", "hc": 2, "br_oh": 663, "br_ow": 384, "br_h": 663,
|
||||
"br_w": 384, "rs_h": 811, "rs_w": 384, "rs_cd": 24, "ars_h": 811, "ars_w": 384, "plg": 2, "eva": 33,
|
||||
"vnd": "Google Inc.", "plu": ["5gQIEKN", "Iv26GLka"],
|
||||
"ua": "Mozilla/5.0 (Linux; Android 11) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36",
|
||||
"dvm": 4, "acw": "probably", "pr": 2.8125, "ts_mtp": 5,
|
||||
"cookiesStr": "app.sig=Arp0SzXCTBF2ordHf3pPTd6cS14;datadome=o_7W8TjHcQjqvnFjFBGAZZ0OmNOd0fnJXfzgqOajAHBBNv7zNMFi2~Jn7wQbTEIZdr2qvg0IFFQQr~Zk5ifzM154V1XxZVhgDZeVkNyRKrQewLBIzVeSagWs587fBqdX;app=eyJmbGFzaCI6e30sImNhY2hlZmxhc2giOltdLCJjc3JmU2VjcmV0IjoieVVRWmJBWnlRTnQ5bFlNbDdNN3R6eHhqIn0=;policy=accepted;lang=fr;"}"""
|
||||
|
||||
if __name__ == '__main__':
|
||||
test_data_dict = json.loads(test_data_json)
|
||||
js = JsDataPojo(glrd=test_data_dict['glrd'], glvd=test_data_dict['glvd'], hc=test_data_dict['hc'],
|
||||
ua=test_data_dict['ua'], br_oh=test_data_dict['br_oh'], br_ow=test_data_dict['br_ow'],
|
||||
ars_h=test_data_dict['ars_h'], ars_w=test_data_dict['ars_w'], pr=test_data_dict['pr'],
|
||||
plg=test_data_dict['plg'], br_h=test_data_dict['br_h'], br_w=test_data_dict['br_w'],
|
||||
plu=test_data_dict['plu'], vnd=test_data_dict['vnd'], dvm=test_data_dict['dvm'],
|
||||
ts_mtp=test_data_dict['ts_mtp'], eva=test_data_dict['eva'], rs_h=test_data_dict['rs_h'],
|
||||
rs_w=test_data_dict['rs_w'], rs_cd=test_data_dict['rs_cd'])
|
||||
print(js.to_url_encoded_json())
|
||||
# text_file = open("jsdata.txt", "w")
|
||||
# # write string to file
|
||||
# text_file.write(safe_string)
|
||||
# # close file
|
||||
# text_file.close()
|
||||
# print(safe_string)
|
||||
# print(js.__dict__)
|
||||
|
||||
@@ -4,7 +4,9 @@ QUEUE_HOST = "appointment.lpaconsulting.fr"
|
||||
REQUEST_DATA_QUEUE = 'REQUEST_DATA'
|
||||
# REQUEST_DATA_QUEUE_TEST = 'REQUEST_DATA_TEST'
|
||||
REQUEST_DATA_QUEUE_TEST = 'REQUEST_DATA_TEST'
|
||||
TEST_QUEUE = 'TEST_QUEUE'
|
||||
REQUEST_DATA_QUEUE_DE = 'REQUEST_DATA_DE'
|
||||
REQUEST_DATA_OBJECT = 'REQUEST_DATA_OBJECT'
|
||||
credentials = pika.PlainCredentials('appointment', 'ZyuhJZ2xEYWhElhpJjy7YEpZGZwNYJz2fHIu')
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import datetime
|
||||
import json
|
||||
import random
|
||||
import threading
|
||||
import time
|
||||
@@ -8,6 +9,7 @@ import pika
|
||||
|
||||
from db.mongo_manager import MONGO_STORE_MANAGER
|
||||
from models.contact_pojo import ContactPojo
|
||||
from models.jsdata_pojo import JsDataPojo
|
||||
from models.result_pojo import RequestResult
|
||||
from queue_message.CookiesPublisher import CookiesPublisher
|
||||
from utiles import is_time_between
|
||||
@@ -97,16 +99,27 @@ class AppointmentRequestSender(threading.Thread):
|
||||
self.channel.start_consuming()
|
||||
|
||||
def on_message(self, ch, method, properties, body):
|
||||
print(f" [x] Received {body}")
|
||||
_message_count = self.cookiesPublisher.message_count()
|
||||
print("message count in queue is {}".format(_message_count))
|
||||
_received_cookies = body.decode("UTF-8")
|
||||
sender = Sender(_received_cookies, cookiesPublisher=self.cookiesPublisher,
|
||||
_received_object = body.decode("UTF-8")
|
||||
print(f" [x] Received {_received_object}")
|
||||
if "glrd" in _received_object:
|
||||
_received_dict = json.loads(_received_object)
|
||||
js_data = JsDataPojo(glrd=_received_dict['glrd'], glvd=_received_dict['glvd'], hc=_received_dict['hc'],
|
||||
ua=_received_dict['ua'], br_oh=_received_dict['br_oh'], br_ow=_received_dict['br_ow'],
|
||||
ars_h=_received_dict['ars_h'], ars_w=_received_dict['ars_w'], pr=_received_dict['pr'],
|
||||
plg=_received_dict['plg'], br_h=_received_dict['br_h'], br_w=_received_dict['br_w'],
|
||||
plu=_received_dict['plu'], vnd=_received_dict['vnd'], dvm=_received_dict['dvm'],
|
||||
ts_mtp=_received_dict['ts_mtp'], eva=_received_dict['eva'],
|
||||
rs_h=_received_dict['rs_h'],
|
||||
rs_w=_received_dict['rs_w'], rs_cd=_received_dict['rs_cd'])
|
||||
_received_cookies = _received_dict["cookiesStr"]
|
||||
sender = Sender(_received_cookies, cookiesPublisher=self.cookiesPublisher, received_dict=_received_dict,
|
||||
proxy_to_use=random.choice(self.proxy_to_use_list))
|
||||
self.contact_list = filter_contacts(self.contact_list)
|
||||
# remove already booked contacts
|
||||
random.shuffle(self.contact_list)
|
||||
if len(self.contact_list) > 0 and is_open() and _message_count > 5:
|
||||
if len(self.contact_list) > 0 and is_open():
|
||||
captchaResultGetter = CaptchaResultGetter()
|
||||
print("contact number is {}".format(len(self.contact_list)))
|
||||
self.contact_list = filter_contacts(self.contact_list)
|
||||
@@ -115,13 +128,14 @@ class AppointmentRequestSender(threading.Thread):
|
||||
print(con.mail)
|
||||
# time.sleep(random.randint(1, 5))
|
||||
if self.valid_csrf is None:
|
||||
self.valid_csrf = captchaResultGetter.get_csrf(proxy_to_use=random.choice(self.proxy_to_use_list),
|
||||
self.valid_csrf = captchaResultGetter.get_csrf(
|
||||
proxy_to_use=random.choice(self.proxy_to_use_list),
|
||||
cookie=body.decode("UTF-8"))
|
||||
_new_cookies = captchaResultGetter.get_valid_ch_cookie(sender.proxy_to_use,
|
||||
_new_cookies = captchaResultGetter.get_valid_ch_cookie(sender.proxy_to_use, js_data,
|
||||
old_valid_cookie=_received_cookies)
|
||||
if _new_cookies is not None:
|
||||
print("new cookie is " + _new_cookies)
|
||||
sender.cookie_str = _new_cookies
|
||||
if _received_cookies is not None:
|
||||
print("new cookie is " + _received_cookies)
|
||||
sender.cookie_str = _received_cookies
|
||||
can_continue = sender.send_request(HERMES_REGISTER, con, csrf=self.valid_csrf)
|
||||
else:
|
||||
can_continue = RequestResult.COOKIES_ERROR
|
||||
@@ -135,14 +149,17 @@ class AppointmentRequestSender(threading.Thread):
|
||||
else:
|
||||
print("can continue, will reset valid_csrf")
|
||||
self.valid_csrf = None
|
||||
# else:
|
||||
# print(con.mail + "--> skip")
|
||||
time.sleep(random.randint(1, 2))
|
||||
print("will ack method.delivery_tag: " + str(method.delivery_tag))
|
||||
ch.basic_ack(delivery_tag=method.delivery_tag)
|
||||
else:
|
||||
print("empty list")
|
||||
time.sleep(120)
|
||||
print("will basic_reject method.delivery_tag: " + str(method.delivery_tag))
|
||||
ch.basic_reject(delivery_tag=method.delivery_tag, requeue=True)
|
||||
else:
|
||||
print("not a valid object")
|
||||
ch.basic_ack(delivery_tag=method.delivery_tag)
|
||||
|
||||
def run(self):
|
||||
print(threading.currentThread().name + " starts")
|
||||
|
||||
+5
-4
@@ -7,7 +7,8 @@ from threading import Thread
|
||||
from db.mongo_manager import MONGO_STORE_MANAGER
|
||||
from excel_reader import read_contacts
|
||||
from models.contact_pojo import ContactPojo
|
||||
from queue_message.CookiesPublisher import CookiesPublisher, REQUEST_DATA_QUEUE_DE, REQUEST_DATA_QUEUE_TEST
|
||||
from queue_message.CookiesPublisher import CookiesPublisher, REQUEST_DATA_QUEUE_DE, REQUEST_DATA_QUEUE_TEST, \
|
||||
REQUEST_DATA_OBJECT, TEST_QUEUE
|
||||
from queue_message.appointmentrequestsender import AppointmentRequestSender, REQUEST_DATA_QUEUE
|
||||
from utiles import is_time_between
|
||||
from workers.captcha_result_getter import CaptchaResultGetter, HERMES_REGISTER
|
||||
@@ -88,14 +89,14 @@ def send_appointment_request(message_queue_name, _contact_list):
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
contacts_file_path = '~/Desktop/contact_list_2024-03-14-2.xlsx'
|
||||
contacts_file_path = '~/Desktop/contact_list_2024-03-09.xlsx'
|
||||
_contact_list = read_contacts(contacts_file_path)
|
||||
_segment_number = 1
|
||||
_segment_number = 10
|
||||
for i in range(0, _segment_number):
|
||||
print(i)
|
||||
_step = int(len(_contact_list) / _segment_number)
|
||||
_sublist = _contact_list[i:_step * (i + 1)]
|
||||
print(_sublist[0])
|
||||
print(_sublist[-1])
|
||||
_thread1 = Thread(target=send_appointment_request, args=(REQUEST_DATA_QUEUE_DE, _sublist))
|
||||
_thread1 = Thread(target=send_appointment_request, args=(REQUEST_DATA_OBJECT, _sublist))
|
||||
_thread1.start()
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
from models.jsdata_pojo import JsDataPojo
|
||||
|
||||
|
||||
def generate_js_data():
|
||||
pass
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
glrd = "ANGLE (Qualcomm, Adreno (TM) 650, OpenGL ES 3.2)"
|
||||
glvd = "Google Inc. (Qualcomm)"
|
||||
hc = 6
|
||||
br_oh = 646
|
||||
br_ow = 360
|
||||
br_h = 646
|
||||
br_w = 360
|
||||
rs_h = 1440
|
||||
rs_w = 2560
|
||||
rs_cd = 24
|
||||
ars_h = 800
|
||||
ars_w = 360
|
||||
eva = 33
|
||||
vnd = "Google Inc."
|
||||
plu = "LNGqVpzZ,yCJEKNO"
|
||||
plg = 2
|
||||
ua = "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Mobile Safari/537.36"
|
||||
jsData = JsDataPojo(glrd=glrd, hc=hc, ua=ua, br_oh=br_oh, br_ow=br_ow, br_h=br_h, br_w=br_w, rs_h=rs_h, rs_w=rs_w,
|
||||
eva=eva,
|
||||
rs_cd=rs_cd, plg=plg, plu=plu, ars_h=ars_h, ars_w=ars_w, vnd=vnd, glvd=glvd)
|
||||
|
||||
print(jsData)
|
||||
@@ -5,6 +5,7 @@ from time import time
|
||||
from typing import Union
|
||||
import requests
|
||||
|
||||
from models.jsdata_pojo import JsDataPojo
|
||||
from workers.proxies_constants import PROXY_LIST_FR
|
||||
|
||||
API_KEY = "d66aaf490d8aa424a5175e1fbd1aadea"
|
||||
@@ -97,9 +98,16 @@ class CaptchaResultGetter:
|
||||
print(error)
|
||||
return None
|
||||
|
||||
def get_valid_ch_cookie(self, proxy_to_use, old_valid_cookie: str = None, dvm=4, hc=6) -> Union[str, None]:
|
||||
def get_ch_raw_data_from_js_data(self, js_data: JsDataPojo, old_valid_cookie) -> str:
|
||||
_tag_version = "4.24.1"
|
||||
_raw_data = "jsData={}&eventCounters=%5B%5D&jsType=ch&cid={}&ddk=789361B674144528D0B7EE76B35826&Referer=https%253A%252F%252Frendezvousparis.hermes.com%252Fclient%252Fregister&request=%252Fclient%252Fregister&responsePage=origin&ddv={}".format(
|
||||
js_data.to_url_encoded_json(), old_valid_cookie, _tag_version)
|
||||
print("raw data is " + _raw_data)
|
||||
return _raw_data
|
||||
|
||||
def get_valid_ch_cookie(self, proxy_to_use, js_data: JsDataPojo, old_valid_cookie: str = None) -> Union[str, None]:
|
||||
headers = {'content-Type': 'application/x-www-form-urlencoded',
|
||||
'user-Agent': 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Mobile Safari/537.36',
|
||||
'user-Agent': js_data.ua,
|
||||
'accept': '*/*',
|
||||
'referer': 'https://rendezvousparis.hermes.com/',
|
||||
'origin': 'https://rendezvousparis.hermes.com/',
|
||||
@@ -109,13 +117,14 @@ class CaptchaResultGetter:
|
||||
'sec-fetch-dest': 'empty',
|
||||
'accept-encoding': 'gzip, deflate, br',
|
||||
'accept-language': 'fr-FR,fr;q=0.6'}
|
||||
print(proxy_to_use)
|
||||
# print(proxy_to_use)
|
||||
print("send request to get new cookie")
|
||||
print(headers)
|
||||
try:
|
||||
# tag_pu = 10 * Math.random()
|
||||
response = requests.post(url="https://d.digital.hermes/js/", headers=headers, verify=False,
|
||||
data=self.get__ch_raw_data(old_valid_cookie=old_valid_cookie, dvm=dvm, hc=hc),
|
||||
data=self.get_ch_raw_data_from_js_data(js_data=js_data,
|
||||
old_valid_cookie=old_valid_cookie),
|
||||
proxies=proxy_to_use, timeout=15)
|
||||
print(response.status_code)
|
||||
if response.status_code == 200:
|
||||
@@ -130,22 +139,6 @@ class CaptchaResultGetter:
|
||||
print(error)
|
||||
return None
|
||||
|
||||
def get__ch_raw_data(self, old_valid_cookie: str = None, dvm=4, hc=6):
|
||||
_raw_data = None
|
||||
js_set = int(time())
|
||||
tag_pu = random.uniform(1, 10)
|
||||
while len(str(tag_pu)) != 17:
|
||||
tag_pu = random.uniform(1, 10)
|
||||
|
||||
if old_valid_cookie is None:
|
||||
_raw_data = "jsData=%7B%22log1%22%3Afalse%2C%22opts%22%3A%22endpoint%2CajaxListenerPath%22%2C%22ttst%22%3A38%2C%22ifov%22%3Afalse%2C%22hc%22%3A{}%2C%22br_oh%22%3A646%2C%22br_ow%22%3A360%2C%22ua%22%3A%22Mozilla%2F5.0%20(Linux%3B%20Android%2010%3B%20K)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F115.0.0.0%20Mobile%20Safari%2F537.36%22%2C%22wbd%22%3Afalse%2C%22tagpu%22%3A{}%2C%22wdif%22%3Afalse%2C%22wdifrm%22%3Afalse%2C%22npmtm%22%3Afalse%2C%22br_h%22%3A646%2C%22br_w%22%3A360%2C%22nddc%22%3A1%2C%22rs_h%22%3A800%2C%22rs_w%22%3A360%2C%22rs_cd%22%3A24%2C%22phe%22%3Afalse%2C%22nm%22%3Afalse%2C%22jsf%22%3Afalse%2C%22lg%22%3A%22fr-FR%22%2C%22pr%22%3A3%2C%22ars_h%22%3A800%2C%22ars_w%22%3A360%2C%22tz%22%3A-60%2C%22str_ss%22%3Atrue%2C%22str_ls%22%3Atrue%2C%22str_idb%22%3Atrue%2C%22str_odb%22%3Atrue%2C%22plgod%22%3Afalse%2C%22plg%22%3A2%2C%22plgne%22%3A%22err%22%2C%22plgre%22%3A%22err%22%2C%22plgof%22%3A%22err%22%2C%22plggt%22%3A%22err%22%2C%22pltod%22%3Afalse%2C%22hcovdr%22%3Afalse%2C%22hcovdr2%22%3Afalse%2C%22plovdr%22%3Afalse%2C%22plovdr2%22%3Afalse%2C%22ftsovdr%22%3Afalse%2C%22ftsovdr2%22%3Afalse%2C%22lb%22%3Afalse%2C%22eva%22%3A33%2C%22lo%22%3Afalse%2C%22ts_mtp%22%3A5%2C%22ts_tec%22%3Atrue%2C%22ts_tsa%22%3Atrue%2C%22vnd%22%3A%22Google%20Inc.%22%2C%22bid%22%3A%22NA%22%2C%22mmt%22%3A%22empty%22%2C%22plu%22%3A%226GLkaVK%2CjRvAfXq0%22%2C%22hdn%22%3Afalse%2C%22awe%22%3Afalse%2C%22geb%22%3Afalse%2C%22dat%22%3Afalse%2C%22med%22%3A%22defined%22%2C%22aco%22%3A%22probably%22%2C%22acots%22%3Afalse%2C%22acmp%22%3A%22probably%22%2C%22acmpts%22%3Atrue%2C%22acw%22%3A%22probably%22%2C%22acwts%22%3Afalse%2C%22acma%22%3A%22maybe%22%2C%22acmats%22%3Afalse%2C%22acaa%22%3A%22probably%22%2C%22acaats%22%3Atrue%2C%22ac3%22%3A%22%22%2C%22ac3ts%22%3Afalse%2C%22acf%22%3A%22probably%22%2C%22acfts%22%3Afalse%2C%22acmp4%22%3A%22maybe%22%2C%22acmp4ts%22%3Afalse%2C%22acmp3%22%3A%22probably%22%2C%22acmp3ts%22%3Afalse%2C%22acwm%22%3A%22maybe%22%2C%22acwmts%22%3Afalse%2C%22ocpt%22%3Afalse%2C%22vco%22%3A%22%22%2C%22vcots%22%3Afalse%2C%22vch%22%3A%22probably%22%2C%22vchts%22%3Atrue%2C%22vcw%22%3A%22probably%22%2C%22vcwts%22%3Atrue%2C%22vc3%22%3A%22maybe%22%2C%22vc3ts%22%3Afalse%2C%22vcmp%22%3A%22%22%2C%22vcmpts%22%3Afalse%2C%22vcq%22%3A%22%22%2C%22vcqts%22%3Afalse%2C%22vc1%22%3A%22probably%22%2C%22vc1ts%22%3Atrue%2C%22dvm%22%3A{}%2C%22sqt%22%3Afalse%2C%22so%22%3A%22portrait-primary%22%2C%22wdw%22%3Atrue%2C%22cokys%22%3A%22bG9hZFRpbWVzY3NpL%3D%22%2C%22ecpc%22%3Afalse%2C%22lgs%22%3Atrue%2C%22lgsod%22%3Afalse%2C%22psn%22%3Atrue%2C%22edp%22%3Afalse%2C%22addt%22%3Atrue%2C%22wsdc%22%3Atrue%2C%22ccsr%22%3Atrue%2C%22nuad%22%3Atrue%2C%22bcda%22%3Atrue%2C%22idn%22%3Atrue%2C%22capi%22%3Afalse%2C%22svde%22%3Afalse%2C%22vpbq%22%3Atrue%2C%22ucdv%22%3Afalse%2C%22spwn%22%3Afalse%2C%22emt%22%3Afalse%2C%22bfr%22%3Afalse%2C%22dbov%22%3Afalse%2C%22cfpfe%22%3A%22ZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudFsnXHg3MVx4NzVceDY1XHg3Mlx4NzlceDUzXHg2NVx4NmNceDY1XHg2M1x4NzRceDZmXHg3MiddKCdceDYyXHg3Mlx4NmZceDc3XHg3M1x4NjVceDcyXHg2Nlx4NmNceDZmXHg3N1x4MmRceDYzXHg2Zlx4NmVceDc0XHg2%22%2C%22stcfp%22%3A%22aWdpdGFsLmhlcm1lcy90YWdzLmpzOjI6NzUxMjIpCiAgICBhdCA8Y29tcHV0ZWQ%2BIFthcyBkZF9hYV0gKGh0dHBzOi8vZC5kaWdpdGFsLmhlcm1lcy90YWdzLmpzOjI6ODc0OTcpCiAgICBhdCBodHRwczovL2QuZGlnaXRhbC5oZXJtZXMvdGFncy5qczoyOjUxNTM1%22%2C%22ckwa%22%3Atrue%2C%22glvd%22%3A%22Google%20Inc.%20(Qualcomm)%22%2C%22glrd%22%3A%22ANGLE%20(Qualcomm%2C%20Adreno%20(TM)%20650%2C%20OpenGL%20ES%203.2)%22%2C%22wwl%22%3Afalse%2C%22jset%22%3A{}%7D&eventCounters=%5B%5D&jsType=ch&cid=HG1lksF0XhPB_eV20MFkjOIO23fSH1DxZ1lsGCJ3opnnvGKp_7gihsaJK76kIwphZYvAkAs19ohywGLxvAi~5F3VT6kg8ubmzYfBNcdbfXabTcb7Z4QNDG5UlD7lri90&ddk=789361B674144528D0B7EE76B35826&Referer=https%253A%252F%252Frendezvousparis.hermes.com%252Fclient%252Fregister&request=%252Fclient%252Fregister&responsePage=origin&ddv=4.19.3".format(
|
||||
hc, tag_pu, dvm, js_set)
|
||||
else:
|
||||
_raw_data = "jsData=%7B%22opts%22%3A%22endpoint%2CajaxListenerPath%22%2C%22ttst%22%3A53%2C%22ifov%22%3Afalse%2C%22hc%22%3A{}%2C%22br_oh%22%3A646%2C%22br_ow%22%3A360%2C%22ua%22%3A%22Mozilla%2F5.0%20(Linux%3B%20Android%2010%3B%20K)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F115.0.0.0%20Mobile%20Safari%2F537.36%22%2C%22wbd%22%3Afalse%2C%22tagpu%22%3A{}%2C%22wdif%22%3Afalse%2C%22wdifrm%22%3Afalse%2C%22npmtm%22%3Afalse%2C%22br_h%22%3A646%2C%22br_w%22%3A360%2C%22isf%22%3Atrue%2C%22nddc%22%3A1%2C%22rs_h%22%3A800%2C%22rs_w%22%3A360%2C%22rs_cd%22%3A24%2C%22phe%22%3Afalse%2C%22nm%22%3Afalse%2C%22jsf%22%3Afalse%2C%22lg%22%3A%22fr-FR%22%2C%22pr%22%3A3%2C%22ars_h%22%3A800%2C%22ars_w%22%3A360%2C%22tz%22%3A-60%2C%22str_ss%22%3Atrue%2C%22str_ls%22%3Atrue%2C%22str_idb%22%3Atrue%2C%22str_odb%22%3Atrue%2C%22plgod%22%3Afalse%2C%22plg%22%3A2%2C%22plgne%22%3A%22err%22%2C%22plgre%22%3A%22err%22%2C%22plgof%22%3A%22err%22%2C%22plggt%22%3A%22err%22%2C%22pltod%22%3Afalse%2C%22hcovdr%22%3Afalse%2C%22hcovdr2%22%3Afalse%2C%22plovdr%22%3Afalse%2C%22plovdr2%22%3Afalse%2C%22ftsovdr%22%3Afalse%2C%22ftsovdr2%22%3Afalse%2C%22lb%22%3Afalse%2C%22eva%22%3A33%2C%22lo%22%3Afalse%2C%22ts_mtp%22%3A5%2C%22ts_tec%22%3Atrue%2C%22ts_tsa%22%3Atrue%2C%22vnd%22%3A%22Google%20Inc.%22%2C%22bid%22%3A%22NA%22%2C%22mmt%22%3A%22empty%22%2C%22plu%22%3A%22LNGqVpzZ%2CyCJEKNO%22%2C%22hdn%22%3Afalse%2C%22awe%22%3Afalse%2C%22geb%22%3Afalse%2C%22dat%22%3Afalse%2C%22med%22%3A%22defined%22%2C%22aco%22%3A%22probably%22%2C%22acots%22%3Afalse%2C%22acmp%22%3A%22probably%22%2C%22acmpts%22%3Atrue%2C%22acw%22%3A%22probably%22%2C%22acwts%22%3Afalse%2C%22acma%22%3A%22maybe%22%2C%22acmats%22%3Afalse%2C%22acaa%22%3A%22probably%22%2C%22acaats%22%3Atrue%2C%22ac3%22%3A%22%22%2C%22ac3ts%22%3Afalse%2C%22acf%22%3A%22probably%22%2C%22acfts%22%3Afalse%2C%22acmp4%22%3A%22maybe%22%2C%22acmp4ts%22%3Afalse%2C%22acmp3%22%3A%22probably%22%2C%22acmp3ts%22%3Afalse%2C%22acwm%22%3A%22maybe%22%2C%22acwmts%22%3Afalse%2C%22ocpt%22%3Afalse%2C%22vco%22%3A%22%22%2C%22vcots%22%3Afalse%2C%22vch%22%3A%22probably%22%2C%22vchts%22%3Atrue%2C%22vcw%22%3A%22probably%22%2C%22vcwts%22%3Atrue%2C%22vc3%22%3A%22maybe%22%2C%22vc3ts%22%3Afalse%2C%22vcmp%22%3A%22%22%2C%22vcmpts%22%3Afalse%2C%22vcq%22%3A%22%22%2C%22vcqts%22%3Afalse%2C%22vc1%22%3A%22probably%22%2C%22vc1ts%22%3Atrue%2C%22dvm%22%3A{}%2C%22sqt%22%3Afalse%2C%22so%22%3A%22portrait-primary%22%2C%22wdw%22%3Atrue%2C%22cokys%22%3A%22bG9hZFRpbWVzY3NpL%3D%22%2C%22ecpc%22%3Afalse%2C%22lgs%22%3Atrue%2C%22lgsod%22%3Afalse%2C%22psn%22%3Atrue%2C%22edp%22%3Afalse%2C%22addt%22%3Atrue%2C%22wsdc%22%3Atrue%2C%22ccsr%22%3Atrue%2C%22nuad%22%3Atrue%2C%22bcda%22%3Atrue%2C%22idn%22%3Atrue%2C%22capi%22%3Afalse%2C%22svde%22%3Afalse%2C%22vpbq%22%3Atrue%2C%22ucdv%22%3Afalse%2C%22spwn%22%3Afalse%2C%22emt%22%3Afalse%2C%22bfr%22%3Afalse%2C%22dbov%22%3Afalse%2C%22cfpfe%22%3A%22ZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudFsnXHg3MVx4NzVceDY1XHg3Mlx4NzlceDUzXHg2NVx4NmNceDY1XHg2M1x4NzRceDZmXHg3MiddKCdceDYyXHg3Mlx4NmZceDc3XHg3M1x4NjVceDcyXHg2Nlx4NmNceDZmXHg3N1x4MmRceDYzXHg2Zlx4NmVceDc0XHg2%22%2C%22stcfp%22%3A%22Oi8vZC5kaWdpdGFsLmhlcm1lcy90YWdzLmpzOjI6NzYzMDIpCiAgICBhdCB0LmV4cG9ydHMuZGRfYWIgKGh0dHBzOi8vZC5kaWdpdGFsLmhlcm1lcy90YWdzLmpzOjI6OTA2MjIpCiAgICBhdCBodHRwczovL2QuZGlnaXRhbC5oZXJtZXMvdGFncy5qczoyOjUxNzMz%22%2C%22ckwa%22%3Atrue%2C%22glvd%22%3A%22Google%20Inc.%20(Qualcomm)%22%2C%22glrd%22%3A%22ANGLE%20(Qualcomm%2C%20Adreno%20(TM)%20650%2C%20OpenGL%20ES%203.2)%22%2C%22wwl%22%3Afalse%2C%22jset%22%3A{}%7D&eventCounters=%5B%5D&jsType=ch&cid={}&ddk=789361B674144528D0B7EE76B35826&Referer=https%253A%252F%252Frendezvousparis.hermes.com%252Fclient%252Fregister&request=%252Fclient%252Fregister&responsePage=origin&ddv=4.24.1".format(
|
||||
hc, tag_pu, dvm, js_set, old_valid_cookie)
|
||||
print("raw data is " + _raw_data)
|
||||
return _raw_data
|
||||
|
||||
def get_raw_data(self, old_valid_cookie: str = None, dvm=4, hc=6):
|
||||
_raw_data = None
|
||||
|
||||
|
||||
+6
-2
@@ -1,4 +1,5 @@
|
||||
import datetime
|
||||
import json
|
||||
import random
|
||||
import time
|
||||
from http.cookies import SimpleCookie
|
||||
@@ -14,13 +15,14 @@ from workers.proxies_constants import PROXY_LIST_FR
|
||||
|
||||
class Sender:
|
||||
|
||||
def __init__(self, cookie_str, cookiesPublisher: CookiesPublisher, proxy_to_use):
|
||||
def __init__(self, cookie_str, cookiesPublisher: CookiesPublisher, received_dict, proxy_to_use):
|
||||
self.store_type = "random"
|
||||
self.cookie = SimpleCookie()
|
||||
self.cookiesPublisher = cookiesPublisher
|
||||
# self.cookie_str = 'datadome=~pxdHFAvsQl2rvDrTzhPgCHxu~4TBcePTTE~Cy8Rgol6oMRc11gA02VRp0Z3uEDUszCjacubNu7vbfQCh27gz8RC10u_325pt_gsMmJh1ScGvOofVJiVAbEKvSEUjd82;policy=accepted;app.sig=PhjmDkq_dI49pADppDNKxpLe_G4;app=eyJmbGFzaCI6e30sImNhY2hlZmxhc2giOltdLCJjc3JmU2VjcmV0IjoiYnRodHNYU1lvdnl4RzVGakpGRDZsQ0JtIn0=;lang=fr;'
|
||||
self.cookie_str = cookie_str
|
||||
self._csrf = None
|
||||
self.received_dict = received_dict
|
||||
self.proxy_to_use = proxy_to_use
|
||||
self.cookie.load(self.cookie_str)
|
||||
|
||||
@@ -85,7 +87,9 @@ class Sender:
|
||||
new_coolies_str = new_coolies_str + key + "=" + new_cookies[key] + ";"
|
||||
print("will publish to queue {}".format(new_coolies_str))
|
||||
# upload the cookie to queue
|
||||
self.cookiesPublisher.publish_body(new_coolies_str)
|
||||
self.received_dict['cookiesStr'] = new_coolies_str
|
||||
print("body in json:{}".format(json.dumps(self.received_dict)))
|
||||
self.cookiesPublisher.publish_body(json.dumps(self.received_dict))
|
||||
# self.cookie_str = new_coolies_str
|
||||
return RequestResult.SUCCESS
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user