Exportando as credenciais de proxy dos perfis
Use este script Python para exportar as configurações de proxy armazenadas nos perfis de navegador do Multilogin para um arquivo JSON.
Adicione os IDs dos perfis manualmente, carregue-os de um arquivo JSON ou use Profile Search → o script envia os IDs para Profile Metas → os dados de proxy exportados são salvos em proxy_credentials.json.
Use este script quando precisar das configurações de proxy de vários perfis de navegador em um arquivo estruturado.
Antes de começar
- Verifique se o Python está instalado e, depois, instale os dois pacotes externos usados pelo script:
python -m pip install requests python-dotenv
Os módulososejsonjá estão incluídos no Python. - Salve o script
proxies_to_json.pyna pasta desejada
proxies_to_json.py
import os
import json
import dotenv
import hashlib
import requests
dotenv.load_dotenv()
# Credentials are pulled from a local .env file
USERNAME = os.getenv("MLXUSERNAME")
PASSWORD = os.getenv("MLXPASSWORD")
# Insert Your FolderID here
FOLDERID = "91f042e6-xxx-4e1f-adee-5eed6bb47d60"
# Insert your profile_ids.json filepath here
LIST_PATH = "C:/.../files/pid_list.json"
# Paste your string values manually:
LIST_MANUAL = [
"95f6d02c-xxxx-47c4-b1d4-369801f2a37c",
"48da90d8-xxxx-40a2-8ccb-2d9e7e3eaebb",
"e2f9d96a-xxxx-4439-ae74-10beda6bf109",
"fffca377-xxxx-495e-a408-3a98716e14ea",
"f3559ca3-xxxx-479c-8a8a-c4b831e8f78b",
"1c1e09dc-xxxx-4495-979b-7cb805a3a8a1",
"a66ba910-xxxx-48ac-a6d1-615f996b3a1d",
"f17140f4-xxxx-47c5-96d5-1b9fd184203b",
"0a505d93-xxxx-4ba9-bd25-d37bf8bb168d",
]
# API-Related Objects
LOCALHOST = "http://127.0.0.1"
MLX_BASE = "https://api.multilogin.com"
LAUNCHERV1 = "https://launcher.mlx.yt:45001/api/v1"
HEADERS = {"Accept": "application/json", "Content-Type": "application/json"}
# Login Function
def signin() -> str:
payload = {
"email": USERNAME,
"password": hashlib.md5(PASSWORD.encode()).hexdigest(),
}
r = requests.post(f"{MLX_BASE}/user/signin", json=payload)
if r.status_code != 200:
print(f"\nError during login: {r.text}\n")
return ""
else:
response = r.json()["data"]
token = response["token"]
return token
# Search Profiles called "TempName": recently created by the Bulk Create function.
def profile_search():
url = "https://api.multilogin.com/profile/search"
body = {
"is_removed": False, # Do you wish to search for removed profiles? True/False
"limit": 100, # How many profile results do you wish to get?
"offset": 0, # Check MLX Documenter page for a full parameter breakdown
"search_text": "",
"storage_type": "all",
"order_by": "created_at",
"sort": "asc",
}
response = requests.request("POST", url, headers=HEADERS, json=body)
resp_json = json.loads(response.content)
return resp_json
# Obtain a list of ProfileIDs retrieved by the Profile Search endpoint
def get_profile_ids():
profile_list = profile_search()
if profile_list["data"]["total_count"] == 0:
print("No more profiles found: error in response or end of task.")
return []
else:
if (
profile_list
and "data" in profile_list
and "profiles" in profile_list["data"]
):
profile_ids = [
profile["id"] for profile in profile_list["data"]["profiles"]
]
return profile_ids
else:
print("Error - Please check Get Profile IDs function.")
# Use Profile Metas endpoint to get the Proxy information registrered.
def search_proxy_metas(option_call):
url = "https://api.multilogin.com/profile/metas"
if option_call == "1":
payload = json.dumps({"ids": LIST_MANUAL})
elif option_call == "2":
payload = json.dumps({"ids": get_profile_ids()})
elif option_call == "3":
with open(LIST_PATH, "r") as file:
proxies = json.load(file)
payload = json.dumps({"ids": proxies})
else:
print("Invalid option. Restart.")
return
response = requests.request("POST", url, headers=HEADERS, data=payload)
response_object = response.text
extracted_data = json.loads(
response_object
) # Full Profile Metas object (not only proxies)
query_result = []
for profile in extracted_data["data"]["profiles"]:
proxy_metas = profile["parameters"]["proxy"]
query_result.append(proxy_metas)
proxy_json = json.dumps(query_result, indent=4)
print(proxy_json)
# Write the JSON with results
with open("proxy_credentials.json", "w") as json_file:
json_file.write(proxy_json)
print(
f"Total of {len(query_result)} proxies were saved on proxy_credentials.json \n"
)
# Main function
def main():
token = signin()
if token:
HEADERS.update({"Authorization": f"Bearer {token}"})
else:
print("Failed to sign in.")
option_call = input(
"\n\n Select method to find proxy list: \n (1) from PATH \n (2) from Profile Search \n (3) Manual List (line 17) \n Write Selection: \n "
)
search_proxy_metas(option_call)
if __name__ == "__main__":
main()- Salve o arquivo
.envna mesma pasta.
Escolha quais perfis de navegador exportar
O script pode obter IDs de perfil de três formas:
-
Lista manual: adicione IDs de perfil específicos diretamente a
LIST_MANUAL - Profile Search: recupere perfis do espaço de trabalho atual
-
Arquivo JSON: carregue os IDs de perfil do arquivo definido em
LIST_PATH
Como executar o script
- Abra seu terminal e navegue até a pasta que contém o script
- Execute o script
proxies_to_json.py - Selecione a opção de entrada desejada quando solicitado
Você pode escolher inserir sua lista de ID de perfil por caminho, texto ou pesquisa, ou usar os resultados do endpoint Profile Search.
Se estiver usando a opção Profile Search, ajuste os parâmetros da função adequadamente.
- Verifique os resultados no arquivo
proxy_credentials.jsonarmazenado na mesma pasta
Resultado esperado: o script cria proxy_credentials.json na mesma pasta e grava um objeto de configuração de proxy para cada perfil de navegador selecionado que tenha dados de proxy salvos.
Certifique-se de que os perfis para este script tenham detalhes de proxy. Isso é especialmente importante para a segunda opção de entrada, pois o endpoint Profile Search procura, por padrão, os primeiros 100 perfis em seu espaço de trabalho.