import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* @Auther: rll
* @Date: 2022/7/1 16:20
* @Description:
*/
public class Test {
public static String expressQuery() {
try {
String url = "https://fanyi.baidu.com/v2transapi?from=en&to=zh";
//替换参数 type postId temp
String cookie = "xxx";//需替换
URL urlCon = new URL(url);
HttpURLConnection conn = (HttpURLConnection) urlCon.openConnection();
conn.setDoOutput(true);
conn.setConnectTimeout(5 * 1000);
conn.setRequestMethod("POST");
conn.setRequestProperty("Cookie", cookie);
conn.setRequestProperty("Host", "fanyi.baidu.com");
conn.setRequestProperty("Referer", "xxx");//需替换
conn.setRequestProperty("User-Agent", "xxx");//需替换
conn.connect();
//传参
DataOutputStream dos = new DataOutputStream(conn.getOutputStream());
String content = "from=en&to=zh&query=express&transtype=translang&simple_means_flag=3&sign=472074.251707&token=xxx&domain=common";//需替换
dos.writeBytes(content);
dos.flush();
dos.close();
//获取返回值
InputStream inStream = conn.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(inStream, "utf-8"));
StringBuffer buffer = new StringBuffer();
String line = "";
while ((line = in.readLine()) != null) {
buffer.append(line);
}
return buffer.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
System.out.println(expressQuery());
}
}
代码运行需要替换"XXX"部分的内容,具体需要替换的值通过浏览器按“F12”进入开发者模式,选定“NetWork”,点击触发请求,查看对应url,点击查看详细信息。下面我做一些简单教学:
1.打开百度翻译,按F12,点击Network
2.点击“翻译按钮”,会出来一堆url,不要慌,找出“v2transapi?from=en&to=zh”
3.点击它,右侧会出详细的信息,在“Payload”中有相应的请求信息,在“Response”中会有对应的返回内容
3.1content的内容就是来自于Payload,因为这个是POST方式请求的,如果是GET的可以直接在URL中加,像代码中已有的"?from=en&to=zh"
4.把返回值复制粘贴到解析网站,比如通过bejson网站解析,我们能清晰的看出返回数据的结构
5.好了,大家可以完善代码,尝试去做一下了。 另外请大家不要恶意使用这种爬取功能,共同维护网络安全人人有责。