Всем здрасьте задался такой вот задачкой, нужно скачать все видосы с ВК которые когда-либо были отправлены в ЛС, сделать это довольно таки просто если бы их была парочка, то можно было бы просто ручками, но их хер знает сколько... Так вот разобравшись немного стало понятно как формируются ссылки на эти видосы и как имея доступ к самому видосу его можно скачать. Проблема заключается только в том, что для получения заветной ссылки на скачивание видоса в виде файла нужно авторизоваться в ВК, иначе ничего не получится(это чисто из-за приватности и конфиденциальности, что только отправитель может смотреть видосы переходя по ссылке). Как итог подумал авторизоваться в ВК через Selenium и потом уже получать заветные ссылки и сохранять файлы. НО тут вторая проблема я могу захотеть еще что-нибудь сделать через Selenium или по несколько прогнать скрипт если, понадобится и постоянно проходить ручную(двойная аутентификация все дела) авторизацию не комильфо, поэтому я решил авторизовываться используя cooke. Протестировал код ниже на другом форуме все работает нормально (Сначала вручную авторизовался за выделенные 25 секунд, потом сделал дамп печенек и работал уже только с ним) Spoiler Code: from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager import time import pickle options = webdriver.ChromeOptions() options.add_argument("--disable-blink-features=AutomationControlled") # options.add_argument("") options.add_argument("user-agent=Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0") driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options ) try: url = "https://www.cyberforum.ru/log-in.php" # driver.get(url) # time.sleep(25) # pickle.dump(driver.get_cookies(), open(f"cookies", "wb")) driver.get(url) time.sleep(5) for cookie in pickle.load(open(f"cookies", "rb")): driver.add_cookie(cookie) time.sleep(5) driver.refresh() time.sleep(15) except Exception as ex: print(ex) finally: driver.close() driver.quit() Потом же попробовал выцепить cookie и добавить их по другому, а именно так: Spoiler Code: from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager import time options = webdriver.ChromeOptions() options.add_argument("--disable-blink-features=AutomationControlled") options.add_argument("user-agent=Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0") driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options ) try: url = "https://www.cyberforum.ru/" driver.get(url) driver.add_cookie({'domain': 'www.cyberforum.ru', 'httpOnly': False, 'name': 'cfdup_timestamp', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': 'www.cyberforum.ru', 'httpOnly': True, 'name': 'cfsessionhash', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': 'www.cyberforum.ru', 'expiry': 1688598045, 'httpOnly': True, 'name': 'cfpassword', 'path': '/', 'secure': True, 'value': 'что-то там'}) driver.add_cookie({'domain': 'www.cyberforum.ru', 'httpOnly': False, 'name': 'PHPSESSID', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': '.cyberforum.ru', 'expiry': 1688598028, 'httpOnly': False, 'name': 'FCNEC', 'path': '/', 'secure': False, 'value': '[["что-то там"],null,[]]'}) driver.add_cookie({'domain': 'www.cyberforum.ru', 'expiry': 1659654026, 'httpOnly': False, 'name': 'pg_ip', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': '.cyberforum.ru', 'expiry': 1657148448, 'httpOnly': False, 'name': '_gid', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': '.cyberforum.ru', 'expiry': 1657134026, 'httpOnly': False, 'name': '_ym_isad', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': 'www.cyberforum.ru', 'expiry': 1657065645, 'httpOnly': False, 'name': 'vbseo_loggedin', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': '.cyberforum.ru', 'expiry': 1688598025, 'httpOnly': True, 'name': '__ddg1_', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': 'www.cyberforum.ru', 'expiry': 1657148426, 'httpOnly': False, 'name': 'pg_tc', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': 'www.cyberforum.ru', 'expiry': 1659654026, 'httpOnly': False, 'name': 'pg_custom_timeout', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': 'www.cyberforum.ru', 'expiry': 1688598026, 'httpOnly': False, 'name': 'pg_mm2_cookie_a', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': 'www.cyberforum.ru', 'httpOnly': False, 'name': 'pg_geo', 'path': '/', 'secure': False, 'value': '{"что-то там"})'}) driver.add_cookie({'domain': 'www.cyberforum.ru', 'expiry': 1688598045, 'httpOnly': True, 'name': 'cfuserid', 'path': '/', 'secure': True, 'value': 'что-то там'}) driver.add_cookie({'domain': 'www.cyberforum.ru', 'expiry': 1657148426, 'httpOnly': False, 'name': 'pg_geo_response_time', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': 'www.cyberforum.ru', 'expiry': 1657148426, 'httpOnly': False, 'name': 'pg_after_init_response_time', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': 'www.cyberforum.ru', 'expiry': 1688598025, 'httpOnly': False, 'name': 'cflastvisit', 'path': '/', 'secure': True, 'value': 'что-то там'}) driver.add_cookie({'domain': 'www.cyberforum.ru', 'expiry': 1657148426, 'httpOnly': False, 'name': 'pg_preconnecting', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': 'www.cyberforum.ru', 'expiry': 1657065626, 'httpOnly': False, 'name': 'pg_session_depth', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': '.cyberforum.ru', 'expiry': 1688598026, 'httpOnly': False, 'name': '_ym_uid', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': 'www.cyberforum.ru', 'expiry': 1659654026, 'httpOnly': False, 'name': 'pg_beacon', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': 'www.cyberforum.ru', 'expiry': 1657065645, 'httpOnly': False, 'name': 'pg_canonical_session', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': 'www.cyberforum.ru', 'expiry': 1657148426, 'httpOnly': False, 'name': 'pg_unq_cohort_key', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': '.cyberforum.ru', 'expiry': 1720134048, 'httpOnly': False, 'name': '_ga', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': '.cyberforum.ru', 'expiry': 1688598026, 'httpOnly': False, 'name': '_ym_d', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': '.cyberforum.ru', 'expiry': 1657062086, 'httpOnly': False, 'name': '_gat_gtag_UA_595018_2', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': 'www.cyberforum.ru', 'expiry': 1657065626, 'httpOnly': False, 'name': 'pg_session_id', 'path': '/', 'secure': False, 'value': 'что-то там}) driver.add_cookie({'domain': 'www.cyberforum.ru', 'expiry': 1657065626, 'httpOnly': False, 'name': 'pg_buildfile', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': 'www.cyberforum.ru', 'expiry': 1688598045, 'httpOnly': False, 'name': 'cflastactivity', 'path': '/', 'secure': True, 'value': 'что-то там'}) driver.get("https://www.cyberforum.ru/vb-net/thread3005667.html") time.sleep(5) driver.get("https://www.cyberforum.ru/python-tasks/") time.sleep(5) driver.get("https://www.cyberforum.ru/python-tasks/thread3005141.html") time.sleep(5) driver.refresh() time.sleep(15) except Exception as ex: print(ex) finally: driver.close() driver.quit() После чего попробовал сделать тоже самое, но уже с ВК, все те же действия и код, за исключением ссылок и cookie файла. И тут уже интересно, спустя около секунды после загрузки печенек вылетает ошибка "ERR_TOO_MANY_REDIRECTS", если делать это используя файл дампа, а если прописать печеньки таким образом: Spoiler Code: from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager import time options = webdriver.ChromeOptions() options.add_argument("--disable-blink-features=AutomationControlled") options.add_argument("user-agent=Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0") driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options ) try: url = "https://vk.com" driver.add_cookie({'domain': 'vk.com', 'expiry': 1657149644, 'httpOnly': False, 'name': 'tmr_detect', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': '.vk.com', 'expiry': 1685834441, 'httpOnly': False, 'name': 'tmr_reqNum', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': '.vk.com', 'expiry': 1688814007, 'httpOnly': True, 'name': 'remixdmgr', 'path': '/', 'secure': True, 'value': 'что-то там'}) driver.add_cookie({'domain': '.vk.com', 'expiry': 1657077637, 'httpOnly': True, 'name': 'remixdmgr_tmp', 'path': '/', 'secure': True, 'value': 'что-то там'}) driver.add_cookie({'domain': '.vk.com', 'expiry': 1688129520, 'httpOnly': True, 'name': 'remixsid', 'path': '/', 'secure': True, 'value': 'что-то там'}) driver.add_cookie({'domain': '.vk.com', 'expiry': 1688556536, 'httpOnly': True, 'name': 'remixuas', 'path': '/', 'secure': True, 'value': 'что-то там'}) driver.add_cookie({'domain': '.vk.com', 'expiry': 1685834441, 'httpOnly': False, 'name': 'tmr_lvidTS', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': '.vk.com', 'expiry': 1659655239, 'httpOnly': False, 'name': 'remixflash', 'path': '/', 'secure': True, 'value': 'что-то там'}) driver.add_cookie({'domain': '.vk.com', 'expiry': 1688599239, 'httpOnly': False, 'name': 'remixscreen_depth', 'path': '/', 'secure': True, 'value': 'что-то там'}) driver.add_cookie({'domain': '.vk.com', 'expiry': 1688599240, 'httpOnly': False, 'name': 'remixdark_color_scheme', 'path': '/', 'secure': True, 'value': 'что-то там'}) driver.add_cookie({'domain': '.vk.com', 'expiry': 1688599221, 'httpOnly': False, 'name': 'remixdt', 'path': '/', 'secure': True, 'value': 'что-то там'}) driver.add_cookie({'domain': 'vk.com', 'expiry': 1688173972, 'httpOnly': True, 'name': 'remixnsid', 'path': '/', 'secure': True, 'value': 'что-то там'}) driver.add_cookie({'domain': '.vk.com', 'expiry': 1657668021, 'httpOnly': False, 'name': 'remixgp', 'path': '/', 'secure': True, 'value': 'что-то там'}) driver.add_cookie({'domain': '.vk.com', 'expiry': 1685834441, 'httpOnly': False, 'name': 'tmr_lvid', 'path': '/', 'secure': False, 'value': 'что-то там'}) driver.add_cookie({'domain': '.vk.com', 'expiry': 1688599239, 'httpOnly': False, 'name': 'remixscreen_winzoom', 'path': '/', 'secure': True, 'value': 'что-то там'}) driver.add_cookie({'domain': '.vk.com', 'expiry': 1688599239, 'httpOnly': False, 'name': 'remixscreen_height', 'path': '/', 'secure': True, 'value': 'что-то там'}) driver.add_cookie({'domain': '.vk.com', 'expiry': 1657668039, 'httpOnly': False, 'name': 'remixscreen_orient', 'path': '/', 'secure': True, 'value': 'что-то там'}) driver.add_cookie({'domain': '.vk.com', 'expiry': 1688599239, 'httpOnly': False, 'name': 'remixscreen_dpr', 'path': '/', 'secure': True, 'value': 'что-то там'}) driver.add_cookie({'domain': '.vk.com', 'expiry': 1659655241, 'httpOnly': False, 'name': 'remixseenads', 'path': '/', 'secure': True, 'value': 'что-то там'}) driver.add_cookie({'domain': '.vk.com', 'expiry': 1688599239, 'httpOnly': False, 'name': 'remixscreen_width', 'path': '/', 'secure': True, 'value': 'что-то там'}) driver.add_cookie({'domain': '.vk.com', 'expiry': 1689053169, 'httpOnly': False, 'name': 'remixua', 'path': '/', 'secure': True, 'value': 'что-то там'}) driver.add_cookie({'domain': '.vk.com', 'expiry': 1688599220, 'httpOnly': False, 'name': 'remixstlid', 'path': '/', 'secure': True, 'value': 'что-то там'}) driver.add_cookie({'domain': '.vk.com', 'expiry': 1689013485, 'httpOnly': False, 'name': 'remixstid', 'path': '/', 'secure': True, 'value': 'что-то там'}) driver.add_cookie({'domain': '.vk.com', 'expiry': 1688599240, 'httpOnly': False, 'name': 'remixcolor_scheme_mode', 'path': '/', 'secure': True, 'value': 'что-то там'}) driver.add_cookie({'domain': '.vk.com', 'expiry': 1657149620, 'httpOnly': False, 'name': 'remixbdr', 'path': '/', 'secure': True, 'value': 'что-то там'}) driver.add_cookie({'domain': 'vk.com', 'expiry': 1688453271, 'httpOnly': True, 'name': 'remixluas2', 'path': '/', 'secure': True, 'value': 'что-то там'}) driver.add_cookie({'domain': '.vk.com', 'expiry': 1688118792, 'httpOnly': False, 'name': 'remixlang', 'path': '/', 'secure': False, 'value': 'что-то там'}) time.sleep(5) driver.refresh() time.sleep(15) except Exception as ex: print(ex) finally: driver.close() driver.quit() тогда у этой ошибки не будет и вообще ничего не будет потому что уже сам интерпретатор скажет: Spoiler Message: invalid cookie domain (Session info: chrome=103.0.5060.66) Stacktrace: Backtrace: Используемые библиотеки: Spoiler selenium==4.2.0 Webdriver-Manager==3.7.0 Буду благодарен если кто-то подскажет как все таки авторизоваться в ВК через Selenium используя cookie. Есть подозрения что что-то не так с cookie, точнее с тем как Selenium их пытается воспринимать, но вот я хз в интернете инфы не нашел на эту тему.
К сожалению это не сработает, так как примерно так я и загружаю cookie, тут как я понимаю есть некий конфликт в них. Наткнулся на одно обсуждение от 16 года, и там было что-то похожее, как я понял со стороны ВК давались одинаковые cookie которые конфликтовали между собой в автоматическом порядке внедрения, а если на повседневной то, было все нормально и браузер выбирал те cookie у которых срок жизни был дольше. Но тут я не вижу прям чтобы были одинаковые cookie, но возможно есть что-то подобное, но я хз...
Насколько мне известно, ВКонтакте хранит некоторые куки, связанные с авторизацией, на домене login.vk.com. Также попробуйте использовать данные из Local storage браузера.