Python+요청을 사용하여 시뮬레이션된 로그인 구현 및 인터페이스 데이터 캡처

머리말

파충류 이야기가 나와서 말인데, 저는 대학에서 PHP+CURL을 사용하여 구현했고 나중에는 Java+WebMagic을 사용하여 구현했습니다. 이제 막 Python을 접하고 Python의 구문과 프레임워크를 이해하기 시작했으며 Python을 사용하여 일부 HTTP 요청을 수행했는데 PHP 및 Java와 비교할 때 기능 구현 측면에서 더 편리하고 간결하며 효율적이라는 것을 알았습니다.

이 예에서 서버는 세션을 기반으로 클라이언트와 세션 연결을 유지합니다. 즉, 각 클라이언트가 처음으로 서버에 액세스할 때 클라이언트의 쿠키 정보가 지워지지 않는 한 서버는 세션을 엽니다. 사용자에 의해 또는

다음은 Python의 요청 종속성 라이브러리를 사용하여 클라이언트 시뮬레이션 로그인을 구현합니다.

1. 운영환경

Python => 3.11.2
urllib3 => 1.26.15

2. 예제 코드

(1) index.py

#! /usr/bin/env python3
# -*- coding: utf-8 -*-

import requests
import json
import urllib3

urllib3.disable_warnings()  # InsecureRequestWarning: Unverified HTTPS request is being made to host 'xxx'. Adding certificate verification is strongly advised.

# 实例化 session 对象
session = requests.session()

# 打印前后的请求标头
headers = {
    "Content-Type": 'application/json',
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36"
}
print('原 session 的请求标头' + str(session.headers))
session.headers = headers
print('新 session 的请求标头' + str(session.headers))

# 更新为使用账号密码登录成功的 session 对象
url = 'https://xxx.com/api/login'  # 登录接口
data = {
    'username': '',
    'password': ''
}
response = session.post(url, data=json.dumps(data), headers=headers, verify=False)

if response.status_code == 200:
    print('尊敬的用户,' + '您已模拟登录 成功~')
    print(response.text)
    print(response.cookies)
else:
    print('模拟登录 失败!')
print('\n')

# 爬取 getUserList 接口数据
userListUrl = 'https://xxx.com/api/getUserList'  # 目标接口
response = session.get(userListUrl, headers=headers, cookies={}, verify=False)

if response.status_code == 200:
    print('爬取接口 成功~')
    print(response.text)
else:
    print('爬取接口 失败!')

3. 동작 효과

D:\Python3.11\python.exe D:\workspace\python3_django4_web\python3_django4_web\simulated_client\index.py 

原 session 的请求标头{'User-Agent': 'python-requests/2.28.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}
新 session 的请求标头{'Content-Type': 'application/json', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36'}

尊敬的XXX用户,您已模拟登录 成功~
{"success":true,"statusCode":200,"data":"..."}
<RequestsCookieJar[...]>


爬取接口 成功~
{"success":true,"statusCode":200,"data": [...]}

Process finished with exit code 0

4. 참고문헌

JSESSIONID_hzm326의 블로그-CSDN 블로그에 대한 간단한 설명

추천

출처blog.csdn.net/Cai181191/article/details/129865455