MACHINE — LEITOR OLX / CASAS EM SÃO JOSÉ DO RIO PRETO–SP ESTADO DESTA ENTREGA Implementação inicial, sem validação de coleta real: a OLX retornou HTTP 403 no ambiente de desenvolvimento. O adaptador __NEXT_DATA__ depende do layout público e pode precisar de ajuste a partir do HTML retornado na sua hospedagem. Não foi possível executar PHP neste ambiente. Não há anúncios fictícios no pacote. INSTALAÇÃO 1. Envie esta pasta para a hospedagem com PHP 7.4 ou superior. 2. Habilite cURL, DOM, JSON e iconv. 3. Altere token em config.php para uma chave aleatória, longa e secreta. 4. Ajuste provider e email se desejar. Não usa banco de dados. 5. Dê permissão de escrita à pasta storage para o usuário do PHP. 6. Apache: storage/.htaccess bloqueia acesso aos dados brutos. Em Nginx, configure deny all para /olx-rio-preto/storage/ ou aponte storage para uma pasta fora da raiz pública. Proteja também config.php contra exposição como texto. EXECUÇÃO RECOMENDADA: TERMINAL / CRON php /caminho/olx-rio-preto/olx.php collect Exemplo cron diário, às 06h no fuso do servidor: 0 6 * * * /usr/bin/php /caminho/olx-rio-preto/olx.php collect Use o caminho PHP real da hospedagem. EXECUÇÃO WEB POST https://SEU-DOMINIO/olx-rio-preto/olx.php?action=collect Envie token no formulário POST ou no cabeçalho X-Access-Token. Não execute coleta por GET. Cada busca e anúncio usa timeout de 30 s; PHP/servidor podem encerrar execuções longas. Prefira CLI/cron. XML https://SEU-DOMINIO/olx-rio-preto/olx.php?action=xml&token=SUA_CHAVE STATUS https://SEU-DOMINIO/olx-rio-preto/olx.php?action=status&token=SUA_CHAVE Token na URL pode aparecer em logs; prefira X-Access-Token quando o consumidor permitir. ARQUIVOS GERADOS EM STORAGE feed.xml: último retrato aceito, no padrão VRSync do exemplo enviado. review.json: dados normalizados e motivos de exclusão de cada anúncio. status.json: resultado da última execução, inclusive falhas. errors.log: histórico de erros técnicos, sem HTML nem chave de acesso. FILTROS Cidade e UF explícitos: São José do Rio Preto / SP. Tipo explícito: casa ou sobrado. Campo professional/isProfessional explicitamente falso/0: particular. O parâmetro f=p da busca é apenas auxiliar; não substitui a conferência individual. Ausência do campo de particular resulta em exclusão. A classificação da OLX não comprova que o anunciante é o proprietário do imóvel. Pesquisa limitada à categoria venda/casas. Locação explícita é excluída. Não coleta telefone oculto nem dados de login. Não inventa endereço, área, telefone, contato, suíte ou coordenadas ausentes. LIMITES E ATUALIZAÇÕES pages e details_per_run limitam as requisições. O feed é um retrato das páginas lidas naquela execução; não representa todo o catálogo OLX. IDs OLX estáveis impedem duplicação dentro do feed. Não remova imóveis do seu sistema apenas porque deixaram de aparecer neste retrato parcial. Em bloqueio 401/403/429, CAPTCHA, erro de layout ou nenhum anúncio aceito, preserva feed.xml anterior. Consulte status antes de usar o XML: um feed antigo pode conter anúncio já removido. Não há atualização garantida de anúncios antigos. Fotos permanecem como URLs públicas de origem e podem expirar. XML verificado como documento bem formado na execução; não foi validado contra o XSD remoto nem contra um importador específico. Campos sem dado são omitidos; seu importador pode exigir campos adicionais. DIAGNÓSTICO / HTML MANUAL Se o servidor receber 403, o programa para: não possui bypass de bloqueios. É possível testar o parser com HTML da busca salvo manualmente pelo navegador: php olx.php import-html /caminho/busca.html Este modo não faz solicitações de detalhes e depende do __NEXT_DATA__ no HTML. Se o layout mudou, envie um HTML de busca e de anúncio, sem cookies, senhas ou tokens, para ajustar o adaptador. Não é necessário enviar login OLX.