# Network: сетевые запросы страницы

> Всё, что страница запросила: документ, стили, скрипты, картинки, XHR и аналитика

Источник: https://docs.parreq.com/fetch-network/

`include=network` кладёт в ответ поле `network` — всё, что страница запросила:
документ, стили, скрипты, картинки, шрифты, XHR и запросы аналитики.

**Цена:** +2 кредита к разметке, итого 3.

## Окно наблюдения

`network_ms` задаёт окно **после загрузки**, по умолчанию 1000 мс. Смысл ровно
такой: подождать секунду и отдать все запросы, которые к этому моменту были.
Отложенная аналитика, ленивые картинки и запоздалые XHR за это время успевают
уйти. Потолок — 30 000 мс.

```python Python
from parreq import Parreq

client = Parreq("pr_ВАШКЛЮЧ")
res = client.fetch(
    "https://developer.mozilla.org/en-US/",
    include=["network"],
    network_ms=1000,
)

for entry in res.network[:10]:
    print(entry["method"], entry["status"], entry["type"],
          entry["started_ms"], entry["finished_ms"], entry["url"])
```

```javascript Node

const client = new Parreq({ apiKey: "pr_ВАШКЛЮЧ" });
const res = await client.fetch({
  url: "https://developer.mozilla.org/en-US/",
  include: ["network"],
  networkMs: 1000,
});

for (const entry of res.network.slice(0, 10)) {
  console.log(entry.method, entry.status, entry.type, entry.started_ms, entry.finished_ms, entry.url);
}
```

```bash cURL
curl -H "Authorization: Bearer pr_ВАШКЛЮЧ" \
  "https://api.parreq.com/v1/fetch?url=https://developer.mozilla.org/en-US/&include=network&network_ms=1000"
```

## Что приходит

```json
{
  "network": [
    {
      "id": "2472868.1",
      "url": "https://developer.mozilla.org/en-US/",
      "method": "GET",
      "type": "Document",
      "status": 200,
      "mime": "text/html",
      "bytes": 24518,
      "started_ms": 0,
      "finished_ms": 150,
      "error": "",
      "redirected_from": null,
      "from_cache": false,
      "remote_ip": "34.36.15.30"
    }
  ]
}
```

- **`type`** (`string`):
  Как ресурс воспринял браузер: `Document`, `Stylesheet`, `Script`, `Image`,
  `Font`, `XHR`, `Fetch`, `Media`, `Other`.

- **`started_ms`** (`integer`):
  Сколько миллисекунд прошло от **первого** запроса страницы до этого. Отсчёт
  относительный, поэтому его можно складывать в диаграмму как есть.

- **`finished_ms`** (`integer | null`):
  Когда запрос завершился. `null` — не завершился к концу окна наблюдения:
  висит, отменён или ждёт данных.

- **`bytes`** (`integer`):
  Сколько байт пришло по сети, с учётом сжатия.

- **`error`** (`string`):
  Пусто у успешных. У прерванных — что сказал браузер, например
  `net::ERR_BLOCKED_BY_CLIENT`.

- **`redirected_from`** (`string | null`):
  Прежний адрес, если запрос переехал. Переадресация приходит тем же
  идентификатором, и без этого поля сам факт переезда терялся бы.

## Предел

500 записей, в порядке возникновения.

> **Совет.**
>   Ищете скрытый API сайта — фильтруйте по `type` в `XHR` и `Fetch`: там видно
>   адреса, методы и коды ответов, по которым страница получает данные.

## Дальше

**[Сколько ждать страницу](https://docs.parreq.com/fetch#сколько-ждать-страницу)**
    wait_for и wait_ms — чем окно наблюдения отличается от ожидания загрузки.

**[Несколько надстроек сразу](https://docs.parreq.com/fetch-combined)**
    Порядок сбора и общий счёт.
