首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

從 URL 解析 POST 參數實戰:抓包分析與程式化請求構建指南

     編輯:程式設計綜合問答

場景還原

目標 URL:123.57.49.105/index.php/Api/Index/?CODE=1006&JSON={page:1,upDownFlag:0,lng:0,lat:0}

  • 瀏覽器直接開啟無回應 (因為需 POST)。
  • 參數說明:
    • CODE=1006:介面業務代碼。
    • JSON:JSON 字串,含分頁、刷新標記、經緯度。

抓包分析步驟 (Chrome DevTools / Fiddler / Wireshark)

  1. 開啟 DevTools → Network → 勾選 Preserve log。
  2. 在原網頁觸發實際操作 (如下拉刷新)。
  3. 找到 /Api/Index/ 請求,查看 Request Method: POST、Request Headers (Content-Type)、Request Payload/Form Data。
  4. 複製 cURL (bash) 或 Fetch 代碼直接複現。

程式化請求範例

Python (requests)

import requests, json

url = 'https://123.57.49.105/index.php/Api/Index/'
payload = {
    'CODE': '1006',
    'JSON': json.dumps({
        'page': 1,
        'upDownFlag': 0,
        'lng': 0,
        'lat': 0
    })
}
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
r = requests.post(url, data=payload, headers=headers)
print(r.json())

Java (HttpClient 4.5+)

CloseableHttpClient client = HttpClients.createDefault();
HttpPost post = new HttpPost("https://123.57.49.105/index.php/Api/Index/");
List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("CODE", "1006"));
params.add(new BasicNameValuePair("JSON", "{\"page\":1,\"upDownFlag\":0,\"lng\":0,\"lat\":0}"));
post.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
try (CloseableHttpResponse resp = client.execute(post)) {
    System.out.println(EntityUtils.toString(resp.getEntity()));
}

關鍵注意事項

  • Content-Type:多為 application/x-www-form-urlencoded (鍵值對) 或 application/json (純 JSON Body),需與後端一致。
  • 參數編碼:JSON 字串中的特殊字元 (雙引號、冒號) 在 form-urlencoded 中需 URL Encode。
  • 簽名/Token:實際介面常需 sign、timestamp、token 等安全參數,需逆向分析前端 JS 算法。
  • 法律合規:未經授權爬取/呼叫第三方介面可能違反《計算機信息網路國際聯網管理暫行規定》及服務條款,請評估風險。

掌握抓包分析 → 參數提取 → 程式化構建 → 異常處理 的完整鏈路,是介面整合與自動化測試的核心基本功。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved