módulo de solicitudes - parámetro de uso de cookies

Llevar cookie en el parámetro de encabezados

Los sitios web suelen utilizar el campo Cookie en el encabezado de la solicitud para mantener el estado de acceso del usuario, por lo que podemos agregar Cookie al parámetro de encabezado para simular la solicitud de los usuarios normales.

Primero, comprendamos cómo se pasan las cookies en las solicitudes HTTP.

Cuando un navegador visita un sitio web por primera vez, el servidor devolverá un encabezado Set-Cookie en la respuesta, que contiene un valor de cookie denominado "sessionID". El navegador guardará esta cookie localmente y la incluirá automáticamente en el campo de cookies de la solicitud y la enviará al servidor en visitas posteriores. El navegador guarda localmente este valor de cookie para utilizarlo en interacciones posteriores con el sitio web.

Al igual que el recibo de la tienda que recibe cuando va de compras, las cookies en Internet desempeñan un papel similar. Cuando visita un sitio web, el servidor creará una cookie en su navegador, que contiene información importante, como sus registros de actividad en el sitio web, estado de inicio de sesión, etc. El navegador guardará esta cookie.

La próxima vez que visite el mismo sitio web, el navegador enviará automáticamente la cookie guardada al servidor en la solicitud. A través de esta cookie, el servidor puede reconocerlo como un visitante anterior y brindarle servicios personalizados basados ​​en sus preferencias personales o estado de inicio de sesión, como mostrar productos que ha navegado anteriormente, mantener su estado de inicio de sesión, etc.

A través de las cookies, el sitio web puede recordar sus preferencias y registros de actividad para brindarle una mejor experiencia de usuario. Por ejemplo, en un sitio web de compras, las cookies pueden ayudar a guardar el contenido de su carrito de compras, de modo que no pierda los artículos comprados cuando vuelva a visitarlo después de abandonar el sitio web. Al mismo tiempo, las cookies también se pueden utilizar para identificar a los usuarios y garantizar que solo los usuarios autorizados puedan acceder a páginas o funciones específicas.

Sin embargo, las cookies también tienen algunas desventajas. Aumentará el tráfico de la red, porque cada solicitud llevará información de cookies. Además, dado que las cookies se almacenan en los navegadores de los usuarios, pueden ser atacadas y explotadas por piratas informáticos. Además, debido a las restricciones del navegador, las cookies sólo se pueden utilizar bajo el nombre de dominio que las creó y no se pueden obtener ni utilizar bajo otros nombres de dominio.

En resumen, una cookie es un mecanismo para almacenar información del usuario en Internet, que ayuda a los sitios web a identificar las identidades de los usuarios y proporcionar servicios personalizados. Es similar a un recibo al comprar y se utiliza para continuar comprando o para conservar los artículos comprados al regresar después de abandonar el sitio web por un período de tiempo. Pero también debemos prestar atención a la seguridad de las cookies y las restricciones del navegador.

Tomemos como ejemplo el inicio de sesión de github :

análisis de captura de paquetes de inicio de sesión de github

  1. Abra el navegador, haga clic derecho - verificar, hacer clic Net work, verificarPreserve log
  2. Visite la dirección URL de inicio de sesión de githubhttps://github.com/login
  3. Después de ingresar la contraseña de la cuenta y hacer clic en iniciar sesión, acceda a una URL en la que debe iniciar sesión para obtener el contenido correcto, como hacer clic en Su perfil en la esquina superior derecha para acceder.https://github.com/USER_NAME
  4. Después de determinar la URL, determine el agente de usuario y la cookie en la información del encabezado de la solicitud necesaria para enviar la solicitud.

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

código completo

  • Copie el agente de usuario y la cookie del navegador
  • El campo del encabezado de la solicitud y el valor en el navegador deben ser coherentes con el parámetro de encabezados
  • El valor correspondiente a la clave Cookie en el diccionario de parámetros de solicitud de encabezados es una cadena

Ejecute el código para verificar el resultado.

Busque el título en los resultados de salida impresos. Si el contenido del texto del título en html es su cuenta de github, puede usar con éxito el parámetro de encabezados para llevar la cookie y obtener la página a la que solo se puede acceder después de iniciar sesión.

Código de ejemplo que muestra (sin cookies):

# 导入requests模块,用于发送HTTP请求
import requests

# 要访问的GitHub用户资料页面的URL
url = 'https://github.com/USER_NAME'

# 构造请求头字典,包含User-Agent和Cookie等信息
headers = {
    
    
    # 设置User-Agent,模拟浏览器发送请求
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36',
    # 设置Cookie,用于身份验证或其他需要的信息
    'Cookie': 'xxx这里是复制过来的cookie字符串'
}

# 发起GET请求,携带请求头参数
resp = requests.get(url, headers=headers)

# 打印响应的文本内容
print(resp.text)


resultado de ejecución:

inserte la descripción de la imagen aquí

Código de ejemplo que muestra (con cookies):

# 导入requests模块,用于发送HTTP请求和接收响应
import requests

# 定义请求头,设置用户代理(User-Agent)信息和Cookie
headers = {
    
    
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
    'cookie': '_octo=GH1.1.814865664.1688632559; preferred_color_mode=light; tz=Asia%2FShanghai; _device_id=17dd5862d283d3d5d80b4fcad269acb6; has_recent_activity=1; user_session=M09z7GkbQ7wsMNg0LAKMDj5d8_BKYppsYvo0jf7eLuvKASb8; __Host-user_session_same_site=M09z7GkbQ7wsMNg0LAKMDj5d8_BKYppsYvo0jf7eLuvKASb8; tz=Asia%2FShanghai; color_mode=%7B%22color_mode%22%3A%22auto%22%2C%22light_theme%22%3A%7B%22name%22%3A%22light%22%2C%22color_mode%22%3A%22light%22%7D%2C%22dark_theme%22%3A%7B%22name%22%3A%22dark%22%2C%22color_mode%22%3A%22dark%22%7D%7D; logged_in=yes; dotcom_user=emo-github; _gh_sess=vZDgHKIDHKFl5a5PjnZCG0JPH6SmoIxGFjgFUPRZJRmwEodGQdkye7SLZ3n6B9amGQe6P%2BZZsq%2BMn2Wkb9usRBRJ%2Bm0mEIpWENwa8jvuZt7z%2BJGrubtvG3%2BKx6KLvf6%2FTQiJRcn%2BZRs%2BaW1jEiyehy%2B5rPpwsjeruKvwb9BV1yf%2BQJOiNrq2i2u7waDegvtORzIj16VrNgajbN%2BUlaJ7DTuTeN4SLano6nVGgGUFOHltiCh2VVj9xiq7Rh1FkK5RurRqMHKzsythVkL2H2L0Y5Q%2B8ntqEy6XaOKvLnLAN9fUHSkrY7xvd2HHfp%2BMsCipZoPW%2B2FJ3cxZ9ku0VrvJ1F5ApOMzPnNysTw87NB94qt%2FkOEYHwpHHP%2FvA7TsnPsxWWYvt1zL5bjI2KaIRqxwmnYs7%2FJriwyEcX%2BONkx3MzrVqzCFbujAmiWDp3%2B7vTEIQq0u4xxhO3vMEm5ZDg%3D%3D--zixVSZWwAjTLtBjB--vrsVHgpwEzS6viX%2FrXY2SA%3D%3'
}

# 定义要请求的URL地址
url = 'https://github.com/emo-github'

# 发送GET请求并获取响应
response = requests.get(url, headers=headers)

# 打印响应内容并将其以UTF-8编码解析为字符串并输出
print(response.content.decode())

resultado de ejecución:

inserte la descripción de la imagen aquí


Punto de conocimiento: domina la cookie que se lleva en los encabezados

Uso de parámetros de cookies

En la sección anterior, llevamos cookies en el parámetro de encabezados, o podemos usar parámetros de cookies especiales.

  1. El formato del parámetro de cookies: diccionario

    cookies = {"cookie的name":"cookie的value"}

    • El diccionario corresponde a la cadena de cookies en el encabezado de la solicitud, y cada par de pares clave-valor del diccionario está separado por un punto y coma y un espacio.
    • El lado izquierdo del signo igual es el nombre de una cookie, correspondiente a la clave del diccionario de cookies.
    • El lado derecho del signo igual corresponde al valor del diccionario de cookies
  2. Cómo utilizar los parámetros de las cookies

    response = requests.get(url, cookies)

  3. El diccionario necesario para convertir la cadena de cookies al parámetro de cookies:

    cookies_dict = {cookie.split('=')[0]:cookie.split('=')[-1] for cookie in cookies_str.split('; ')}

  4. Nota: Las cookies generalmente tienen una fecha de caducidad y, una vez caducadas, es necesario volver a adquirirlas.

# 导入requests模块,用于发送HTTP请求
import requests

# 要访问的GitHub用户资料页面的URL
url = 'https://github.com/USER_NAME'

# 构造请求头字典
headers = {
    
    
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36'
}
# 构造cookies字典
cookies_str = '从浏览器中copy过来的cookies字符串'

cookies_dict = {
    
    cookie.split('=')[0]:cookie.split('=')[-1] for cookie in cookies_str.split('; ')}

# 请求头参数字典中携带cookie字符串
resp = requests.get(url, headers=headers, cookies=cookies_dict)

print(resp.text)
lit('=')[-1] for cookie in cookies_str.split('; ')}

# 请求头参数字典中携带cookie字符串
resp = requests.get(url, headers=headers, cookies=cookies_dict)

print(resp.text)

Supongo que te gusta

Origin blog.csdn.net/m0_67268191/article/details/132144287
Recomendado
Clasificación