Ajuda em como passar os parâmetro Post

Olá Amigos boa tarde tudo bem?

Eu me chamo Rafael e estou fazendo um projeto em que eu preciso extrair os dados de uma determinada página.

Fiz com Java usando selenium funcionar perfeitamente.

Porem queria estimular mais o meu conhecimento e tentar fazer algo sobre requisições.

O link do site é esse.
https://casadosdados.com.br/solucao/cnpj/pesquisa-avancada?id=CkMTdgKboN1lm-ExgjiJjbVLz94hNbNWtaNeIJ8QSDA%3D

Quando você pressionar o botão pesquisar ele faz a chamada a API no link abaixo.
https://api.casadosdados.com.br/v2/public/cnpj/search

e passa os parâmetros, porem fui olhar no form-data e eu não sei como replicar os cabeçalhos em linhas de código.

Já deixei setado os parâmetros que devem ser passado no cabeçalho.

Se alguém conseguir me dar uma lux, fico agradecido.

Teve um post seu que respondi que ele faz exatamente isso. Uma requisição POST passando um body. Basta vc alterar para passar um JSON e setar o header Content-Type como application/json.

Fala Grande Lucas tudo bem?

Olha eu enchendo o saco aqui de novo, então aquele modelo que passo funcionou perfeitamente, porem como esse modelo de cabeçalho nunca trabalhei, e como estou aprendendo, não sei nem como passa o JSON.

Mas você já deu o caminho, vou dar uma pesquisada em como passar um JSON em um requests.

Cheguei a fazer aqui, porém, parece que o site valida a origem do request, e caso não seja um browser, ela redireciona para uma tela com um captcha:

import requests

body = {
  'extras': {
    'com_contato_telefonico': False,
    'com_email': False,
    'excluir_mei': False,
    'incluir_atividade_secundaria': False,
    'somente_celular': False,
    'somente_filial': False,
    'somente_fixo': False,
    'somente_matriz': False,
    'somente_mei': False
  },
  'query': {
    'atividade_principal': ['4511102'],
    'cep': [],
    'ddd': [],
    'municipio': [],
    'natureza_juridica': [],
    'situacao_cadastral': 'ATIVA',
    'termo': [],
    'uf': ['AM','ES']
  },
  'range_query': {
    'capital_social': {
      'gte': None,
      'lte': None
    },
    'data_abertura': {
      'gte': '2021-08-01',
      'lte': None
    }
  },
  'page': '1'
}

headers = {'Content-type': 'application/json'}

response = requests.post(
  'https://api.casadosdados.com.br/v2/public/cnpj/search', 
  json = body,
  headers = headers
)

print(response.text)

Opa com o que passou tentei passar os metodos na requisição mas não fungou não kkk

import requests

body = {

  'extras': {

    'com_contato_telefonico': False,

    'com_email': False,

    'excluir_mei': False,

    'incluir_atividade_secundaria': False,

    'somente_celular': False,

    'somente_filial': False,

    'somente_fixo': False,

    'somente_matriz': False,

    'somente_mei': False

  },

  'query': {

    'atividade_principal': ['4511102'],

    'cep': [],

    'ddd': [],

    'municipio': [],

    'natureza_juridica': [],

    'situacao_cadastral': 'ATIVA',

    'termo': [],

    'uf': ['AM','ES']

  },

  'range_query': {

    'capital_social': {

      'gte': None,

      'lte': None

    },

    'data_abertura': {

      'gte': '2021-08-01',

      'lte': None

    }

  },

  'page': '1'

}

headers = {

    'referer': '',

    'authority': 'api.casadosdados.com.br',

    'method': 'POST',

    'path': '/v2/public/cnpj/search',

    'scheme' : 'https',

    'accept' : 'application/json, text/plain, */*',

    'accept-encoding': 'gzip, deflate, br',

    'accept-language': 'pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7',

    'content-length' : '500',

    'content-type': 'application/json;charset=UTF-8',

    'origin': 'https://casadosdados.com.br',

    'referer': 'https://casadosdados.com.br/',

    'sec-ch-ua': 'Not A;Brand;v=99, Chromium;v=98, Google Chrome;v=98',

    'sec-ch-ua-mobile': '?0',

    'sec-ch-ua-platform': 'Windows',

    'sec-fetch-dest': 'empty',

    'sec-fetch-mode': 'cors',

    'sec-fetch-site': 'same-site',

    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36',

}

response = requests.get(

  'https://api.casadosdados.com.br/v2/public/cnpj/search',

  json = body, headers=headers

)

print(response.status_code)

Se tiver alguma sugestão,

Tem essa observação que coloquei na minha resposta.