Как отправить запрос GET с заголовками через python - PullRequest
1 голос
/ 19 марта 2019

Я получил fiddler для захвата GET-запроса, я хочу повторно отправить точный запрос с python.Это запрос, который я захватил:

GET https://example.com/api/content/v1/products/search?page=20&page_size=25&q=&type=image HTTP/1.1
Host: example.com
Connection: keep-alive
Search-Version: v3
Accept: application/json
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36
Referer: https://example.com/search/?q=&type=image&page=20
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9

Ответы [ 3 ]

1 голос
/ 19 марта 2019

Вы можете использовать модуль запросы .

Модуль requests автоматически снабжает вас большинством заголовков, поэтому вам, скорее всего, не нужно вручную включать их все.

Поскольку вы отправляете запрос GET, вы можете использовать параметр params, чтобы аккуратно сформировать строку запроса .

Пример:

import requests

BASE_URL = "https://example.com/api/content/v1/products/search"

headers = {
    "Connection": "keep-alive",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
}

params = {
    "page": 20,
    "page_size": 25,
    "type": "image"
}

response = requests.get(BASE_URL, headers=headers, params=params)
1 голос
/ 19 марта 2019

Вы можете открыть сокет SSL (https://docs.python.org/3/library/ssl.html) до example.com:443, записать захваченный запрос в этот сокет в виде необработанных байтов, а затем прочитать HTTP-ответ из сокета.

Вы также можете попытаться использовать класс http.client.HTTPResponse для чтения и анализа HTTP-ответа из вашего сокета, но не предполагается, что этот класс создается напрямую, поэтому могут возникнуть непредвиденные препятствия.

0 голосов
/ 19 марта 2019
import requests

headers = {
    'authority': 'stackoverflow.com',
    'cache-control': 'max-age=0',
    'upgrade-insecure-requests': '1',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
    'referer': 'https://stackoverflow.com/questions/tagged/python?sort=newest&page=2&pagesize=15',
    'accept-encoding': 'gzip, deflate, br',
    'accept-language': 'en-US,en;q=0.9,tr-TR;q=0.8,tr;q=0.7',
    'cookie': 'prov=6bb44cc9-dfe4-1b95-a65d-5250b3b4c9fb; _ga=GA1.2.1363624981.1550767314; __qca=P0-1074700243-1550767314392; notice-ctt=4%3B1550784035760; _gid=GA1.2.1415061800.1552935051; acct=t=4CnQ70qSwPMzOe6jigQlAR28TSW%2fMxzx&s=32zlYt1%2b3TBwWVaCHxH%2bl5aDhLjmq4Xr',
}

response = requests.get('/8697417/kak-otpravit-zapros-get-s-zagolovkami-cherez-python', headers=headers)

Это пример того, как отправить запрос на получение этой страницы с заголовками.

...