segue em python como pode ser feito.
import sys import csv import time import pickle import random # Importando o módulo random from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.common.exceptions import NoSuchElementException, WebDriverException COOKIES_FILE = "instagram_cookies.pkl" INDEX_FILE = "index.txt" # Arquivo para armazenar o índice atual def save_index(index): """ Salva o índice (linha atual) no arquivo index.txt. """ with open(INDEX_FILE, "w") as f: f.write(str(index)) print(f"[INFO] Índice {index} salvo em {INDEX_FILE}.") def load_index(): """ Lê o índice salvo no arquivo index.txt. Retorna 0 se o arquivo não existir ou não puder ser lido. """ if not os.path.exists(INDEX_FILE): return 0 with open(INDEX_FILE, "r") as f: try: return int(f.read().strip()) except ValueError: return 0 def is_logged_in(driver, username): """ Verifica se estamos logados procurando o link para o perfil do usuário (ex: /username/). """ time.sleep(random.uniform(2, 4)) # Pausa aleatória para o DOM carregar try: driver.find_element(By.XPATH, f'//a[@href="/{username}/"]') return True except NoSuchElementException: return False def save_cookies(driver, path): """ Salva as cookies atuais do navegador em um arquivo .pkl. """ with open(path, "wb") as file: pickle.dump(driver.get_cookies(), file) print(f"[INFO] Cookies salvos em {path}.") def load_cookies(driver, path): """ Carrega cookies de arquivo e as adiciona ao driver. Retorna True se as cookies foram carregadas, False caso contrário. """ if not os.path.exists(path): print(f"[INFO] Arquivo de cookies '{path}' não existe. Ignorando.") return False print(f"[INFO] Carregando cookies de {path} (antes de visitar o Instagram)...") with open(path, "rb") as file: cookies = pickle.load(file) for cookie in cookies: # Ajuste do domínio para garantir que elas sejam aceitas cookie['domain'] = '.instagram.com' # Remove 'sameSite' se existir (alguns drivers não aceitam) cookie.pop('sameSite', None) cookie_name = cookie.get('name') try: driver.add_cookie(cookie) driver.refresh() print(f"[INFO] Cookie '{cookie_name}' adicionado.") time.sleep(1) except Exception as e: print(f"[WARN] Falha ao adicionar cookie '{cookie_name}': {e}") print(f"[INFO] Cookies carregadas de {path}.") return True def login_instagram(driver, username, password): """ Faz login no Instagram de forma 'tradicional' (usuário e senha). """ print("[INFO] Realizando login manual...") try: username_input = driver.find_element(By.NAME, "username") password_input = driver.find_element(By.NAME, "password") username_input.send_keys(username) password_input.send_keys(password) password_input.send_keys(Keys.RETURN) time.sleep(random.uniform(4, 6)) # Pausa aleatória para aguardar o carregamento print("[INFO] Login realizado com sucesso.") save_cookies(driver, COOKIES_FILE) except NoSuchElementException as e: print(f"[ERRO] Elemento de login não encontrado: {e}") return False except WebDriverException as e: print(f"[ERRO] Erro ao tentar enviar dados de login: {e}") return False return True def cleanup(driver): """ Limpeza após falha, garantindo que o driver seja fechado. """ print("[INFO] Limpando e fechando o navegador...") driver.quit() def add_close_friends_from_csv(driver, csv_file, start_index): """ Lê a SEGUNDA coluna do arquivo CSV e, para cada usuário, pesquisa o nome no input de busca e tenta marcar como Close Friend. """ # 1. Acessar a página de "Close Friends" driver.get("https://www.instagram.com/accounts/close_friends/") time.sleep(random.uniform(8, 12)) # Pausa aleatória pathFile = os.path.join(os.getcwd(), csv_file) with open(pathFile, "r") as f: reader = csv.reader(f, delimiter=";") index = 0 print("[INFO] Iniciando leitura do arquivo CSV...") for row in reader: if index < start_index: index += 1 continue # Pula até a linha inicial if len(row) < 2: continue # linha sem ao menos 2 colunas # use separator ; to get second column user_to_add = row[1].strip() if not user_to_add: continue search_input = driver.find_element(By.XPATH, '//input[@placeholder="Pesquisar"]') search_input.clear() # Limpar qualquer texto existente search_input.send_keys(user_to_add) time.sleep(random.uniform(5, 8)) # Pausa aleatória user_cards = driver.find_elements( By.XPATH, '//div[@data-bloks-name="bk.components.Flexbox" ' 'and contains(@class,"wbloks_1") and @role="button"]' ) user_card = user_cards[0] if user_cards else None if (user_card == None): print(f"[INFO] Não encontrei o usuário {user_to_add} na busca.") continue # 3. Verificar se o usuário está visível na lista de resultados try: try: user_card.find_element( By.XPATH, './/div[contains(@style, "circle-check__filled__24")]' ) print(f"[INFO] {user_to_add} já é Close Friend, passando para o próximo.") continue # Já está marcado, passe para o próximo except NoSuchElementException: # 4. Marcar o usuário como Close Friend user_card.click() print(f"[INFO] {user_to_add} adicionado aos Close Friends.") time.sleep(random.uniform(2, 3)) # Pausa aleatória except NoSuchElementException: print(f"[INFO] Não encontrei o usuário {user_to_add} na busca.") time.sleep(random.uniform(2, 4)) # Pausa aleatória # Salvar o índice após cada iteração save_index(index) index += 1 def main(args): """ Uso: python script.py SEU_USUARIO SUA_SENHA """ username = args[0] password = args[1] # Carregar o índice de onde o script deve começar start_index = load_index() print(f"[INFO] Iniciando de onde parou, linha {start_index + 1}.") print("[INFO] Iniciando o WebDriver...") driver = webdriver.Chrome() # 1) Carregar cookies antes de abrir o Instagram print("[INFO] Acessando página 'about:blank' para inserir cookies primeiro...") driver.get("about:blank") if not load_cookies(driver, COOKIES_FILE): print("[INFO] Cookies não carregados, tentando login manual.") # 2) Agora sim, acessar Instagram print("[INFO] Indo para https://www.instagram.com/") driver.get("https://www.instagram.com/") time.sleep(random.uniform(1, 2)) # Pausa aleatória para login # 3) Verifica se as cookies nos deixaram logados if is_logged_in(driver, username): print("[INFO] Já estamos logados via cookies (sem necessidade de login).") else: print("[INFO] Não foi possível usar cookies para login. Fazendo login manual.") if not login_instagram(driver, username, password): print("[ERRO] Falha no login. Verifique credenciais ou bloqueios.") cleanup(driver) return # 4) Ler e adicionar Close Friends add_close_friends_from_csv(driver, "lista.csv", start_index) print("[INFO] Finalizando em 5s...") time.sleep(random.uniform(4, 6)) # Pausa aleatória driver.quit() if __name__ == "__main__": # Exemplo: # python script.py SEU_USUARIO SUA_SENHA main(sys.argv[1:])