批发行业网站最近更新后把下载报价的按钮在css内隐藏了,该按钮的功能是正常的,我通过拼凑url能正常进入并和以前一样下载出来excel表格,悲催的是,我不会手动构造POST数据,下载的是空表格,需要技术牛人指导我在控制台内解除按钮屏蔽,或者叫我构造POST数据完成下载。 具体测试内容请私信我
我可以
发出来网址研究一下
就弄个爬虫就ok
该回答引用GPTᴼᴾᴱᴺᴬᴵ
首先,要手动构造 POST 数据,需要了解 POST 请求的数据格式,一般情况下是使用表单形式提交,数据格式为 key1=value1&key2=value2...,也可以使用 JSON 格式进行提交。
对于你的问题,需要在控制台中查看原本按钮发送的 POST 请求,可以在 Network 选项卡中查看。具体步骤如下:
如果数据格式是表单形式提交,可以使用 application/x-www-form-urlencoded 格式,示例代码如下:
// 构造 POST 请求数据
String postData = "key1=value1&key2=value2";
byte[] postDataBytes = postData.getBytes(StandardCharsets.UTF_8);
// 发送 POST 请求
String url = "https://example.com/api";
HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
try (OutputStream outputStream = connection.getOutputStream()) {
outputStream.write(postDataBytes);
}
// 读取响应数据
try (InputStream inputStream = connection.getInputStream();
Scanner scanner = new Scanner(inputStream, StandardCharsets.UTF_8)) {
String responseBody = scanner.useDelimiter("\\A").next();
System.out.println(responseBody);
}
如果数据格式是 JSON 格式提交,可以使用 application/json 格式,示例代码如下:
// 构造 POST 请求数据
Map<String, Object> postData = new HashMap<>();
postData.put("key1", "value1");
postData.put("key2", "value2");
String postDataJson = new ObjectMapper().writeValueAsString(postData);
byte[] postDataBytes = postDataJson.getBytes(StandardCharsets.UTF_8);
// 发送 POST 请求
String url = "https://example.com/api";
HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
try (OutputStream outputStream = connection.getOutputStream()) {
outputStream.write(postDataBytes);
}
// 读取响应数据
try (InputStream inputStream = connection.getInputStream();
Scanner scanner = new Scanner(inputStream, StandardCharsets.UTF_8)) {
String responseBody = scanner.useDelimiter("\\A").next();
System.out.println(responseBody);
}
如果你使用的是 PHP,可以参考以下示例代码:
// 构造 POST 请求数据
$postData = [
"key1" => "value1",
"key2" => "value2",
];
$postDataJson = json_encode($postData);
// 发送 POST 请求
$url = "https://example.com/api";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT
用fiddler或者浏览器的f12功能抓包一下,然后照着写。