Cómo pasar remotamente una consulta de búsqueda desde mi aplicación web a la barra de búsqueda en un sitio web de un tercero y recuperar la página

En primer lugar, déjame hacerme eco de Christopher y decir que si no tienes permiso, probablemente no deberías estar haciendo esto. El mejor de los casos es que solo tienen una API abierta a la que puede enviar una solicitud, como él dijo.

El hecho de que tenga esto etiquetado como “Búsqueda de Google” me dice que hay una cosa más que debe considerar. Si solo desea agregar capacidades de búsqueda de Google a su sitio, lea las instrucciones de Google aquí: Agregue la búsqueda a su sitio

Dicho esto, si sabes codificar y necesitas usar la búsqueda de otro sitio …

Casi todos los lenguajes de codificación tienen alguna forma de realizar solicitudes HTTP y obtener la respuesta. Tendrá que escribir las acciones a continuación utilizando cualquier lenguaje de codificación que use su aplicación web (PHP, JS, Ruby, Python, etc.). Todo lo que necesita hacer es seguir un par de pasos y puede enviar una búsqueda, pero tenga en cuenta que el propietario del sitio puede protegerse contra ellos.

Si es fácil y todo estático: mira el código de la página que aloja la barra de búsqueda. Si se trata de un elemento de formulario estático en un formulario estático, simplemente puede enviar una solicitud GET o POST a la “acción”: la página o secuencia de comandos que procesa el envío del formulario. Asegúrese de que su solicitud GET o POST (coincida con el método del formulario existente) contenga un elemento de formulario con el mismo nombre que la barra de búsqueda y su valor sea la cadena que desea buscar. Si el sitio no protege contra este tipo de secuencias de comandos entre sitios, debería devolver la página de resultados como la respuesta HTTP.

Todavía es fácil pero no solo estático : esencialmente puede hacer lo mismo si la página es relativamente estática, pero si el nombre del elemento de la barra de búsqueda coincide cada vez, deberá obtener una página “nueva” cada vez que desee enviar una nueva búsqueda Entonces, el primer paso sería hacer una solicitud HTTP GET en la página de búsqueda en sí, luego analizar el HTML devuelto y encontrar el elemento de formulario de la barra de búsqueda, y luego enviar una segunda solicitud (nuevamente, GET o POST que coincida con el método del formulario) con sus datos como arriba. Una vez más, incluso la protección básica de secuencias de comandos en sitios cruzados detendría esto.

Uso de Selenium (como mencionó Jaap): si el sitio protege contra las secuencias de comandos entre sitios (y esperemos que así sea), entonces la única forma en que su aplicación web puede enviar una búsqueda en su sitio será enviar una búsqueda en su sitio, como si lo estuviera haciendo manualmente, y luego descargue y analice la página de respuesta. Aquí es donde su aplicación se integra con algo como el controlador web Selenium y usted escribe un script que hace que Selenium llame a la página, complete el elemento del formulario de búsqueda con sus datos y lo envíe, y luego descargue la respuesta y haga lo que sea que vaya a hacer quiero hacer con eso.

¿Alguna vez has probado sitios web de código abierto como Github o BitBucket? Tal vez tienen una solución construida para esto. Su API debe estar adaptada al sitio web de terceros.

Hablas con el otro propietario del sitio web, administrador o lo que sea que lo tenga. Les preguntas si construiste una API en el lado de tus sitios si la utilizarían para su búsqueda. Si han dicho que sí, entonces tómese el tiempo para hacerlo. Si no, eso apesta, pero esa es la elección.

No puede simplemente pasar algo a otro sitio y esperar que funcione. A menos que ese sitio tenga un punto final con el que pueda comunicarse para hacerlo.

Si el sitio lo hace, es probable que dependa de cómo toma los datos en ese punto de entrada, pero supongo que su caso sería algo así como una llamada a la API.

Si no hay una API como se mencionó anteriormente, puede usar selenium webdriver para hacerlo.