Búsqueda de sitios web

Ejecute el comando Curl en PowerShell [2 formas]


En PowerShell 3.0 y superiores, tenemos los cmdlets Invoke-WebRequest e Invoke-RestMethod; curl es un alias de Invoke-WebRequest en PowerShell. La mayoría de los estudiantes lo confunden con el cmdlet Invoke-RestMethod. En PowerShell 7 y versiones posteriores, el cmdlet Invoke-RestMethod es el cmdlet predeterminado para enviar solicitudes de servicios web RESTful.

Es otro cmdlet integrado en PowerShell diseñado principalmente para trabajar con API RESTful y servicios web. Simplifica el envío y la gestión de solicitudes web al analizar automáticamente la respuesta como XML o JSON y admite la autenticación OAuth básica y la autenticación básica.

Sin embargo, Invoke-WebRequest y curl todavía están disponibles en PowerShell, que envía solicitudes HTTPS y HTTP a las API y servidores web. El cmdlet Invoke-WebReqest proporciona más flexibilidad que el cmdlet Invoke-RestMethod a la hora de gestionar protocolos que no son HTTP y personalizar solicitudes.

¿Aún necesitas una aclaración? ¿Quieres comprobar los alias de los comandos? Puede usar el cmdlet Get-Alias para obtener todos los alias con sus respectivos nombres, versiones y fuentes en PowerShell. Sin embargo, Get-Comman curl solo mostrará el alias con el comando, la versión y la fuente respectivos.

Por lo tanto, utilizar cmdlets nativos de PowerShell será más apropiado que utilizar alias. Sin embargo, aprenderemos ambos (Invoke-WebRequest y curl) y le permitiremos elegir según sus requisitos.

Usando el cmdlet Invoke-WebRequest

Utilice el cmdlet Invoke-WebRequest para recuperar datos de la URL especificada en PowerShell.

Utilice el cmdlet Invoke-WebRequest:

Invoke-WebRequest -Uri "https://www.example.com"

PRODUCCIÓN :

StatusCode        : 200
StatusDescription : OK
Content           : 
                    
                    
                        <title>Example Domain</title>
                        <meta charset="utf-8">
                        <meta http-equiv="Content-type" content="text/html; charset=utf-8">
                        <meta name="viewport" conten... rawcontent : http ok age: vary: accept-encoding x-cache: hit content-length: cache-control: max-age="604800" content-type: text charset="UTF-8" date: sat apr gmt exp... forms headers images inputfields links information... innertext="More" outerhtml="<A" href="https://www.iana.org/domains/example">More information...; outerText=More
                    information...; tagName=A; href=https://www.iana.org/domains/example}}
ParsedHtml        : mshtml.HTMLDocumentClass
RawContentLength  : 1256

Usamos el cmdlet Invoke-WebRequest con el parámetro -Uri para obtener contenidos de la página web especificada en Internet. El parámetro -Uri se utilizó para especificar el Identificador uniforme de recursos (URI) del recurso de Internet (servicio web o página) al que se envió una solicitud web.

Tenga en cuenta que el parámetro -Uri solo admite HTTP y HTTPS. Por lo tanto, el uso de este parámetro es obligatorio, pero el nombre del parámetro -Uri es opcional, lo que significa que podemos especificar la URL de una página web o servicio sin usar el parámetro -Uri. nombre.

Al regresar al cmdlet Invoke-WebRequest, envía solicitudes HTTP y HTTPS a la página web o servicio determinado, analiza la respuesta y devuelve la colección de imágenes, enlaces y otros elementos HTML esenciales.

Puede ver el resultado anterior como demostración; obtuvimos StatusCode, StatusDescription, Content, RawContent y otra información importante. También podemos almacenar esta respuesta en una variable y recuperar información específica usando notación de puntos. Por ejemplo, en el siguiente código, utilizamos la notación de puntos para acceder a la propiedad Content de la respuesta.

Utilice el cmdlet Invoke-WebRequest:

$response = Invoke-WebRequest -Uri "https://www.example.com"
$response.Content

PRODUCCIÓN :

    <title>Example Domain</title>
    <meta charset="utf-8">
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <style type="text/css">
    body {
        background-color: #f0f0f2;
        margin: 0;
        padding: 0;
        font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI",
        "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
    }
    div {
        width: 600px;
        margin: 5em auto;
        padding: 2em;
        background-color: #fdfdff;
        border-radius: 0.5em;
        box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);
    }
    a:link, a:visited {
        color: #38488f;
        text-decoration: none;
    }
    @media (max-width: 700px) {
        div {
            margin: 0 auto;
            width: auto;
        }
    }
    </style>


<div>
    <h1>Example Domain</h1>
    <p>This domain is for use in illustrative examples in documents. You may use this
    domain in literature without prior coordination or asking for permission.</p>
    <p><a href="https://www.iana.org/domains/example">More information...</a></p>
</div>

Alternativamente, podemos usar Invoke-WebRequest como iwr para evitar pulsaciones de teclas. El uso de iwr no afectará los resultados; Seguiremos obteniendo el mismo resultado.

Usando el comando curl

Utilice el cmdlet curl para recuperar datos de la URL especificada en PowerShell.

Utilice el comando curl:

curl "https://www.example.com"

PRODUCCIÓN :

StatusCode        : 200
StatusDescription : OK
Content           : 
                    
                    
                        <title>Example Domain</title>
                        <meta charset="utf-8">
                        <meta http-equiv="Content-type" content="text/html; charset=utf-8">
                        <meta name="viewport" conten... rawcontent : http ok age: vary: accept-encoding x-cache: hit content-length: cache-control: max-age="604800" content-type: text charset="UTF-8" date: sat apr gmt exp... forms headers images inputfields links information... innertext="More" outerhtml="<A" href="https://www.iana.org/domains/example">More information...; outerText=More
                    information...; tagName=A; href=https://www.iana.org/domains/example}}
ParsedHtml        : mshtml.HTMLDocumentClass
RawContentLength  : 1256

Mira, obtuvimos el mismo resultado que el comando Invoke-WebRequest -Uri "https://www.example.com" porque curl es el alias del Invocar-WebRequest. Entonces, nuevamente, podemos almacenar la respuesta en una variable y acceder a su propiedad Content usando la notación de puntos de la siguiente manera, que también debe ser los mismos resultados que recibimos al usar Invoke-WebRequest.

Utilice el comando curl:

$response = curl "https://www.example.com"
$response.Content

PRODUCCIÓN :

    <title>Example Domain</title>
    <meta charset="utf-8">
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <style type="text/css">
    body {
        background-color: #f0f0f2;
        margin: 0;
        padding: 0;
        font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI",
        "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
    }
    div {
        width: 600px;
        margin: 5em auto;
        padding: 2em;
        background-color: #fdfdff;
        border-radius: 0.5em;
        box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);
    }
    a:link, a:visited {
        color: #38488f;
        text-decoration: none;
    }
    @media (max-width: 700px) {
        div {
            margin: 0 auto;
            width: auto;
        }
    }
    </style>


<div>
    <h1>Example Domain</h1>
    <p>This domain is for use in illustrative examples in documents. You may use this
    domain in literature without prior coordination or asking for permission.</p>
    <p><a href="https://www.iana.org/domains/example">More information...</a></p>
</div>

Se trata de cómo ejecutar el comando curl en PowerShell.

Artículos relacionados