# พอร์ตมือถือและการหมุนเวียน IP

> API ของ LocalSERP Proxy: พอร์ต 4G/5G, การหมุนเวียน IP (ทันที ตั้งเวลา หรือผ่านลิงก์) และปริมาณการใช้งานรายวัน พารามิเตอร์ ตัวอย่างการตอบกลับ โค้ด curl, Python และ Node.js

- URL: https://localserpproxy.com/th/docs/api/mobile/
- อัปเดตล่าสุด: 2026-10-15
- Publisher: LocalSERP Proxy (https://localserpproxy.com)

พอร์ต 4G/5G แบบเฉพาะ: เปลี่ยน IP ได้ทันทีหรือตั้งเวลา ใช้ลิงก์หมุนเวียน IP และตรวจสอบปริมาณการใช้งานรายวัน

**จุดเชื่อมต่อในหน้านี้**

- `GET /v1/mobile`: แสดงรายการพอร์ตมือถือ
- `GET /v1/mobile/{portId}`: ดูข้อมูลพอร์ตมือถือ
- `PATCH /v1/mobile/{portId}`: เปลี่ยนชื่อ เปิด/ปิดการต่ออายุอัตโนมัติ หรือตั้งค่าการหมุนเวียน IP อัตโนมัติ
- `POST /v1/mobile/{portId}/rotate`: เปลี่ยน IP ทันที
- `GET /v1/mobile/{portId}/rotate`: ลิงก์หมุนเวียน IP (เรียก GET โดยใส่ API key ใน query string)
- `POST /v1/mobile/{portId}/reset-password`: สร้างรหัสผ่านพร็อกซีใหม่สำหรับพอร์ต
- `GET /v1/mobile/{portId}/usage`: ปริมาณการใช้งานรายวันผ่านพอร์ต (ข้อมูลประกอบ: ใช้ดาต้าได้ไม่จำกัด ภายใต้นโยบายการใช้งานอย่างเหมาะสม)
- `GET /v1/catalog/countries/{countryCode}/carriers`: ผู้ให้บริการเครือข่ายมือถือที่มีพอร์ต 4G/5G ให้บริการในประเทศ

URL พื้นฐาน `https://localserpproxy.com/api/v1` การยืนยันตัวตน ข้อผิดพลาด และขีดจำกัด: ดู [ภาพรวม API](https://localserpproxy.com/th/docs/api/).

## รายการพอร์ตมือถือ

`GET /v1/mobile`

การยืนยันตัวตน: ใช้คีย์ API ในส่วนหัว `Authorization: Bearer API_KEY`

**การตอบกลับ** `200 OK`

```json
{
  "data": [
    {
      "id": "mob_2v8k1q",
      "label": "US Verizon #1",
      "status": "active",
      "country": "US",
      "city": null,
      "carrier": "verizon",
      "carrierName": "Verizon",
      "networkType": "4G",
      "currentIp": "203.0.113.201",
      "ipChangedAt": "2026-10-05T14:03:11Z",
      "endpoint": {
        "host": "gw.localserpproxy.com",
        "httpPort": 7777,
        "socksPort": 7778
      },
      "username": "USERNAME",
      "password": "PASSWORD",
      "rotation": {
        "mode": "interval",
        "intervalMinutes": 10
      },
      "minRotationIntervalSeconds": 30,
      "rotationLink": "https://localserpproxy.com/api/v1/mobile/mob_2v8k1q/rotate?key=API_KEY",
      "planId": "mob-us-30d",
      "autoRenew": false,
      "createdAt": "2026-10-05T14:03:11Z",
      "expiresAt": "2026-11-04T14:03:11Z"
    }
  ]
}
```

*curl*

```bash
curl -s "https://localserpproxy.com/api/v1/mobile" \
  -H "Authorization: Bearer $API_KEY"
```

*Python*

```python
import os
import requests

API = "https://localserpproxy.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.get(f"{API}/mobile", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.json())
```

*Node.js*

```javascript
// Node.js 18+ (built-in fetch), ES module
const API = 'https://localserpproxy.com/api/v1';

const res = await fetch(`${API}/mobile`, {
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());
```

## รับพอร์ตมือถือ

`GET /v1/mobile/{portId}`

การยืนยันตัวตน: ใช้คีย์ API ในส่วนหัว `Authorization: Bearer API_KEY`

**พารามิเตอร์**

| ชื่อ | ใน | ประเภท | จำเป็น | คำอธิบาย |
| --- | --- | --- | --- | --- |
| `portId` | path | string | ใช่ | — |

**การตอบกลับ** `200 OK`

```json
{
  "id": "mob_2v8k1q",
  "label": "US Verizon #1",
  "status": "active",
  "country": "US",
  "city": null,
  "carrier": "verizon",
  "carrierName": "Verizon",
  "networkType": "4G",
  "currentIp": "203.0.113.201",
  "ipChangedAt": "2026-10-05T14:03:11Z",
  "endpoint": {
    "host": "gw.localserpproxy.com",
    "httpPort": 7777,
    "socksPort": 7778
  },
  "username": "USERNAME",
  "password": "PASSWORD",
  "rotation": {
    "mode": "interval",
    "intervalMinutes": 10
  },
  "minRotationIntervalSeconds": 30,
  "rotationLink": "https://localserpproxy.com/api/v1/mobile/mob_2v8k1q/rotate?key=API_KEY",
  "planId": "mob-us-30d",
  "autoRenew": false,
  "createdAt": "2026-10-05T14:03:11Z",
  "expiresAt": "2026-11-04T14:03:11Z"
}
```

*curl*

```bash
curl -s "https://localserpproxy.com/api/v1/mobile/mob_2v8k1q" \
  -H "Authorization: Bearer $API_KEY"
```

*Python*

```python
import os
import requests

API = "https://localserpproxy.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.get(f"{API}/mobile/mob_2v8k1q", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.json())
```

*Node.js*

```javascript
// Node.js 18+ (built-in fetch), ES module
const API = 'https://localserpproxy.com/api/v1';

const res = await fetch(`${API}/mobile/mob_2v8k1q`, {
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());
```

## เปลี่ยนชื่อ เปิดหรือปิดการต่ออายุอัตโนมัติ หรือตั้งค่าการหมุน IP อัตโนมัติ

`PATCH /v1/mobile/{portId}`

เปลี่ยนชื่อพอร์ต เปิดหรือปิดการต่ออายุอัตโนมัติ หรือตั้งเวลาหมุน IP อัตโนมัติได้ตั้งแต่ทุก 2 นาทีจนถึงทุก 24 ชั่วโมง: `"rotation": { "mode": "interval", "intervalMinutes": 10 }` (2–1440 นาที); `"mode": "manual"` เพื่อปิด หากไม่ตั้งค่า พอร์ตจะใช้ IP เดิมจนกว่าคุณจะหมุน IP เอง แต่อาจมีบางครั้งที่ผู้ให้บริการเครือข่ายเปลี่ยน IP ให้เอง

การยืนยันตัวตน: ใช้คีย์ API ในส่วนหัว `Authorization: Bearer API_KEY`

**พารามิเตอร์**

| ชื่อ | ใน | ประเภท | จำเป็น | คำอธิบาย |
| --- | --- | --- | --- | --- |
| `portId` | path | string | ใช่ | — |

**เนื้อหาคำขอ**

| ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
| --- | --- | --- | --- |
| `label` | string | ไม่ | สูงสุด 60 ตัวอักษร |
| `autoRenew` | boolean | ไม่ | — |
| `rotation` | object | ไม่ | ตั้งเวลาหมุน IP อัตโนมัติ: `{ "mode": "interval", "intervalMinutes": 2–1440 }` (ตั้งแต่ทุก 2 นาทีจนถึงทุก 24 ชั่วโมง) หรือ `{ "mode": "manual", "intervalMinutes": null }` เพื่อหมุน IP เฉพาะเมื่อสั่งเท่านั้น |

*ตัวอย่าง: หมุน IP อัตโนมัติ*

```json
{
  "rotation": {
    "mode": "interval",
    "intervalMinutes": 10
  }
}
```

*ตัวอย่าง: ด้วยตนเอง*

```json
{
  "rotation": {
    "mode": "manual",
    "intervalMinutes": null
  }
}
```

**การตอบกลับ** `200 OK`

```json
{
  "id": "mob_2v8k1q",
  "label": "US Verizon #1",
  "status": "active",
  "country": "US",
  "city": null,
  "carrier": "verizon",
  "carrierName": "Verizon",
  "networkType": "4G",
  "currentIp": "203.0.113.201",
  "ipChangedAt": "2026-10-05T14:03:11Z",
  "endpoint": {
    "host": "gw.localserpproxy.com",
    "httpPort": 7777,
    "socksPort": 7778
  },
  "username": "USERNAME",
  "password": "PASSWORD",
  "rotation": {
    "mode": "interval",
    "intervalMinutes": 10
  },
  "minRotationIntervalSeconds": 30,
  "rotationLink": "https://localserpproxy.com/api/v1/mobile/mob_2v8k1q/rotate?key=API_KEY",
  "planId": "mob-us-30d",
  "autoRenew": false,
  "createdAt": "2026-10-05T14:03:11Z",
  "expiresAt": "2026-11-04T14:03:11Z"
}
```

*curl*

```bash
curl -s -X PATCH "https://localserpproxy.com/api/v1/mobile/mob_2v8k1q" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"rotation":{"mode":"interval","intervalMinutes":10}}'
```

*Python*

```python
import os
import requests

API = "https://localserpproxy.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.patch(f"{API}/mobile/mob_2v8k1q", headers=HEADERS, json={"rotation": {"mode": "interval", "intervalMinutes": 10}}, timeout=30)
r.raise_for_status()
print(r.json())
```

*Node.js*

```javascript
// Node.js 18+ (built-in fetch), ES module
const API = 'https://localserpproxy.com/api/v1';

const res = await fetch(`${API}/mobile/mob_2v8k1q`, {
  method: 'PATCH',
  headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({ rotation: { mode: 'interval', intervalMinutes: 10 } }),
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());
```

## เปลี่ยน IP ตอนนี้

`POST /v1/mobile/{portId}/rotate`

การหมุน IP แต่ละครั้งจะเชื่อมต่อพอร์ตของคุณกับผู้ให้บริการเครือข่ายอีกครั้งเพื่อรับ IP ใหม่ โดยปกติใช้เวลา 5–15 วินาที บางครั้งผู้ให้บริการเครือข่ายอาจกำหนด IP เดิมให้ ให้ลองหมุน IP อีกครั้ง จำกัดไม่เกิน 1 ครั้งต่อ 30 วินาทีต่อพอร์ต (`minRotationIntervalSeconds`): หากสั่งหมุนเร็วเกินไป ระบบจะส่ง `429 rotation_too_soon` พร้อม `Retry-After` (จำนวนวินาทีที่ต้องรอ)

การยืนยันตัวตน: ใช้คีย์ API ในส่วนหัว `Authorization: Bearer API_KEY`

**พารามิเตอร์**

| ชื่อ | ใน | ประเภท | จำเป็น | คำอธิบาย |
| --- | --- | --- | --- | --- |
| `portId` | path | string | ใช่ | — |

**การตอบกลับ** `200 OK`

```json
{
  "ip": "203.0.113.201",
  "previousIp": "203.0.113.77",
  "rotatedAt": "2026-10-05T14:03:11Z",
  "nextRotationAvailableAt": "2026-10-05T14:03:41Z"
}
```

*curl*

```bash
curl -s -X POST "https://localserpproxy.com/api/v1/mobile/mob_2v8k1q/rotate" \
  -H "Authorization: Bearer $API_KEY"
```

*Python*

```python
import os
import requests

API = "https://localserpproxy.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.post(f"{API}/mobile/mob_2v8k1q/rotate", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.json())
```

*Node.js*

```javascript
// Node.js 18+ (built-in fetch), ES module
const API = 'https://localserpproxy.com/api/v1';

const res = await fetch(`${API}/mobile/mob_2v8k1q/rotate`, {
  method: 'POST',
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());
```

## ลิงก์หมุน IP (GET โดยใส่ API key ใน query string)

`GET /v1/mobile/{portId}/rotate`

ทำงานเหมือน `POST` สำหรับสคริปต์และบุ๊กมาร์ก: `GET https://localserpproxy.com/api/v1/mobile/{portId}/rotate?key=API_KEY` คีย์ต้องมี scope `proxies` `format=text` ส่ง IP ใหม่กลับมาในรูปแบบ `text/plain`

การยืนยันตัวตน: ใช้คีย์ API ในพารามิเตอร์คำขอ `key` (ขอบเขต `proxies`) เพื่อให้ลิงก์เปิดจากบุ๊กมาร์กได้

**พารามิเตอร์**

| ชื่อ | ใน | ประเภท | จำเป็น | คำอธิบาย |
| --- | --- | --- | --- | --- |
| `key` | query | string | ใช่ | API key ของคุณ (scope `proxies`) |
| `portId` | path | string | ใช่ | — |
| `format` | query | `json` · `text` | ไม่ | ค่าเริ่มต้น `json` |

**การตอบกลับ** `200 OK`

```json
{
  "ip": "203.0.113.201",
  "previousIp": "203.0.113.77",
  "rotatedAt": "2026-10-05T14:03:11Z",
  "nextRotationAvailableAt": "2026-10-05T14:03:41Z"
}
```

*curl*

```bash
curl -s "https://localserpproxy.com/api/v1/mobile/mob_2v8k1q/rotate?key=$API_KEY&format=text"
```

*Python*

```python
import os
import requests

API = "https://localserpproxy.com/api/v1"

r = requests.get(f"{API}/mobile/mob_2v8k1q/rotate", params={"key": os.environ["API_KEY"], "format": "text"}, timeout=30)
r.raise_for_status()
print(r.text)
```

*Node.js*

```javascript
// Node.js 18+ (built-in fetch), ES module
const API = 'https://localserpproxy.com/api/v1';

const res = await fetch(`${API}/mobile/mob_2v8k1q/rotate?key=${process.env.API_KEY}&format=text`);
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.text());
```

## สร้างรหัสผ่านพร็อกซีใหม่สำหรับพอร์ต

`POST /v1/mobile/{portId}/reset-password`

การยืนยันตัวตน: ใช้คีย์ API ในส่วนหัว `Authorization: Bearer API_KEY`

**พารามิเตอร์**

| ชื่อ | ใน | ประเภท | จำเป็น | คำอธิบาย |
| --- | --- | --- | --- | --- |
| `portId` | path | string | ใช่ | — |

**การตอบกลับ** `200 OK`

```json
{
  "id": "mob_2v8k1q",
  "label": "US Verizon #1",
  "status": "active",
  "country": "US",
  "city": null,
  "carrier": "verizon",
  "carrierName": "Verizon",
  "networkType": "4G",
  "currentIp": "203.0.113.201",
  "ipChangedAt": "2026-10-05T14:03:11Z",
  "endpoint": {
    "host": "gw.localserpproxy.com",
    "httpPort": 7777,
    "socksPort": 7778
  },
  "username": "USERNAME",
  "password": "PASSWORD",
  "rotation": {
    "mode": "interval",
    "intervalMinutes": 10
  },
  "minRotationIntervalSeconds": 30,
  "rotationLink": "https://localserpproxy.com/api/v1/mobile/mob_2v8k1q/rotate?key=API_KEY",
  "planId": "mob-us-30d",
  "autoRenew": false,
  "createdAt": "2026-10-05T14:03:11Z",
  "expiresAt": "2026-11-04T14:03:11Z"
}
```

*curl*

```bash
curl -s -X POST "https://localserpproxy.com/api/v1/mobile/mob_2v8k1q/reset-password" \
  -H "Authorization: Bearer $API_KEY"
```

*Python*

```python
import os
import requests

API = "https://localserpproxy.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.post(f"{API}/mobile/mob_2v8k1q/reset-password", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.json())
```

*Node.js*

```javascript
// Node.js 18+ (built-in fetch), ES module
const API = 'https://localserpproxy.com/api/v1';

const res = await fetch(`${API}/mobile/mob_2v8k1q/reset-password`, {
  method: 'POST',
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());
```

## ปริมาณการใช้งานรายวันผ่านพอร์ต (ข้อมูลเพิ่มเติม: ใช้ดาต้าได้ไม่จำกัดภายใต้นโยบายการใช้งานอย่างเป็นธรรม)

`GET /v1/mobile/{portId}/usage`

ข้อมูลเพิ่มเติม: ใช้ดาต้าได้ไม่จำกัดบนพอร์ตเฉพาะของคุณภายใต้นโยบายการใช้งานอย่างเป็นธรรม ผู้ให้บริการเครือข่ายมือถืออาจลดความเร็วหรือระงับการใช้งานชั่วคราวเมื่อมีการใช้งานหนักมาก

การยืนยันตัวตน: ใช้คีย์ API ในส่วนหัว `Authorization: Bearer API_KEY`

**พารามิเตอร์**

| ชื่อ | ใน | ประเภท | จำเป็น | คำอธิบาย |
| --- | --- | --- | --- | --- |
| `portId` | path | string | ใช่ | — |
| `from` | query | string (date) | ไม่ | วันแรก (UTC) รวมวันดังกล่าวด้วย ค่าเริ่มต้น = 29 วันก่อน `to` |
| `to` | query | string (date) | ไม่ | วันสุดท้าย (UTC) รวมวันดังกล่าวด้วย ค่าเริ่มต้น = วันนี้ ช่วงสูงสุด 366 วัน |

**การตอบกลับ** `200 OK`

```json
{
  "from": "2026-10-04",
  "to": "2026-10-05",
  "totalBytes": 2350000000,
  "totalRequests": 48210,
  "points": [
    {
      "date": "2026-10-04",
      "bytes": 1200000000,
      "requests": 24800
    },
    {
      "date": "2026-10-05",
      "bytes": 1150000000,
      "requests": 23410
    }
  ],
  "byCountry": [
    {
      "country": "US",
      "bytes": 2350000000
    }
  ]
}
```

*curl*

```bash
curl -s "https://localserpproxy.com/api/v1/mobile/mob_2v8k1q/usage" \
  -H "Authorization: Bearer $API_KEY"
```

*Python*

```python
import os
import requests

API = "https://localserpproxy.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.get(f"{API}/mobile/mob_2v8k1q/usage", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.json())
```

*Node.js*

```javascript
// Node.js 18+ (built-in fetch), ES module
const API = 'https://localserpproxy.com/api/v1';

const res = await fetch(`${API}/mobile/mob_2v8k1q/usage`, {
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());
```

## ผู้ให้บริการเครือข่ายมือถือที่มีพอร์ต 4G/5G พร้อมใช้งานในประเทศ

`GET /v1/catalog/countries/{countryCode}/carriers`

สาธารณะ: ไม่ต้องใช้คีย์ API

**พารามิเตอร์**

| ชื่อ | ใน | ประเภท | จำเป็น | คำอธิบาย |
| --- | --- | --- | --- | --- |
| `countryCode` | path | string | ใช่ | ISO 3166-1 alpha-2 ตัวพิมพ์ใหญ่ |

**การตอบกลับ** `200 OK`

```json
{
  "data": [
    {
      "id": "verizon",
      "name": "Verizon",
      "networkTypes": [
        "4G",
        "5G"
      ],
      "available": true,
      "cities": []
    }
  ]
}
```

*curl*

```bash
curl -s "https://localserpproxy.com/api/v1/catalog/countries/US/carriers"
```

*Python*

```python
import os
import requests

API = "https://localserpproxy.com/api/v1"

r = requests.get(f"{API}/catalog/countries/US/carriers", timeout=30)
r.raise_for_status()
print(r.json())
```

*Node.js*

```javascript
// Node.js 18+ (built-in fetch), ES module
const API = 'https://localserpproxy.com/api/v1';

const res = await fetch(`${API}/catalog/countries/US/carriers`);
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());
```

---

LocalSERP Proxy: LocalSERP Proxy เป็นบริการพร็อกซีเรซิเดนเชียลในสหรัฐฯ สำหรับตรวจสอบผลการค้นหาในพื้นที่ โฆษณา และราคาเป็นรายเมือง ชำระเงินด้วยคริปโตโดยไม่ต้องอัปโหลดเอกสารยืนยันตัวตน.
