𝗖𝗼𝗻𝘃𝗲𝗿𝘁𝗮 𝗰𝗨𝗥𝗟 𝗲𝗺 𝗣𝘆𝘁𝗵𝗼𝗻 𝗥𝗲𝗾𝘂𝗲𝘀𝘁𝘀 𝗣𝗮𝘀𝘀𝗼 𝗮 𝗣𝗮𝘀𝘀𝗼

Você copia uma requisição do DevTools do seu navegador como um comando cURL.

Você obtém os headers, cookies e tokens de autenticação.

Mas você acaba com 30 linhas de código shell bagunçado. Você queria um Python limpo.

Aqui está como mapear um comando cURL para a biblioteca requests do Python manualmente.

  1. Determine o Método Se você vir --data ou --data-raw, o curl usa POST por padrão. Não assuma que é uma requisição GET apenas porque a flag -X está ausente.

  2. Manipule os Headers Cada flag -H torna-se uma entrada em um dicionário. Ao dividir a string do header, divida apenas no primeiro dois-pontos. Valores como URLs ou timestamps contêm dois-pontos. Se você dividir em todos os dois-pontos, você quebrará os dados.

  3. Gerencie os Cookies A flag -b fornece uma string separada por ponto e vírgula. Não coloque isso no seu dicionário de headers. Em vez disso, passe-o para o argumento cookies como um dicionário. Isso permite que a biblioteca cuide da codificação.

  4. Use JSON vs Data Este é um erro comum. Se o content type for application/json, use o argumento json=. Isso serializa seu dicionário e define o header correto para você. Se você usar data=, o requests usará form-encoding. Isso fará com que a API rejeite sua requisição.

  5. Limpe os Parâmetros Mova a query string da URL para um dicionário params. Isso torna seu código legível. Cuidado com a codificação dupla (double-encoding). Se a URL já estiver codificada, não a codifique novamente no seu dicionário.

A estrutura final do código fica assim:

import requests

url = "https://api.example.com/v2/search"
params = {"lang": "en", "page": "2"}
headers = {
    "accept": "application/json",
    "authorization": "Bearer token_here",
    "referer": "https://app.example.com/dashboard",
}
cookies = {"session": "abc123"}
payload = {"q": "nginx"}

resp = requests.post(
    url,
    params=params,
    headers=headers,
    cookies=cookies,
    json=payload,
)

resp.raise_for_status()
print(resp.json())

Armadilhas comuns para evitar:

  • Confundir files= com data= durante uploads multipart.
  • Dividir headers em todos os dois-pontos.
  • Codificação dupla de parâmetros de consulta (query parameters).

Fonte: https://dev.to/wanfeng/from-browser-curl-to-clean-python-requests-code-step-by-step-25oh