Генерация cookies для отправки post-запросов на java

Мне понадобился переводчик. Покупать api у yandex, google или еще каких-либо кампаний возможности нет. Решил делать перевод через запросы. Открыл https://www.bing.com/translator и в FireFox через NetWork monitor отследил, что отправлется в виде post-запроса, когда я перевожу строку через браузер. Осталось переписать все заголовки, и будет готов post-запрос на java, в ответе которого будет перевод моего текста. Вот мой код

   public String translate(String textToTranslate) throws Exception {
    String text = textToTranslate.replace("'", "");
    List<String> dzenArticleUrls = new ArrayList<>();
    HttpClient client = new HttpClient();
    PostMethod post = new PostMethod("https://www.bing.com/tspellcheckv3?isVertical=1");
    post.addRequestHeader("Accept", "*/*");
    post.addRequestHeader("Accept-Encoding", "gzip, deflate, br");
    post.addRequestHeader("Accept-Language", "en-US,en;q=0.5");
    post.addRequestHeader("Connection", "keep-alive");
    post.addRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    post.addRequestHeader("DNT", "1");
    post.addRequestHeader("Host", "www.bing.com");
    post.addRequestHeader("Origin", "https://www.bing.com");
    post.addRequestHeader("Referer", "https://www.bing.com/translator");
    post.addRequestHeader("User-Agent", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:82.0) Gecko/20100101 Firefox/82.0");
    post.addRequestHeader("Cookie", "MUID=3264D2AF1AD36DCF2653DD231B676C13; MUIDB=3264D2AF1AD36DCF2653DD231B676C13; _EDGE_S=F=1&SID=356C9DC8CA5A639E25EF9244CBEE6291; _EDGE_V=1; SRCHD=AF=NOFORM; SRCHUID=V=2&GUID=78DD7A6340FC44319891F67538740FD1&dmnchg=1; SRCHUSR=DOB=20201124&T=1606226453000; _SS=SID=356C9DC8CA5A639E25EF9244CBEE6291; _tarLang=default=ru; _TTSS_OUT=hist=WyJydSJd; SRCHHPGUSR=HV=1606226516&WTS=63741823253; ipv6=hit=1606230056323&t=4; btstkn=PuXbLUBQdrdKtF%252B86P5tqSQ1NEjzqT39mLC4XI7T7ozOIXNO4L0uetpblDCAFOMS");


    NameValuePair[] body = {
            new NameValuePair("fromLang", "auto-detect"),
            new NameValuePair("text", text),
            new NameValuePair("to", "ru"),
    };

    post.setRequestBody(body);
    int statudcode = client.executeMethod(post);
    String postRespose = post.getResponseBodyAsString();
    Gson gson = new Gson();
    return getTranslateResult(gson.fromJson(postRespose, Object.class));
}

Проблема в том, что в строке post.addRequestHeader("Cookie",...) Cookie был скопирован из браузера, и код работает до тех пор, пока у этого Cookie не истек срок годности, скажем так. Каким образом я могу генерировать строку для Cookiе автоматически? Возможно ли как-то эмитировать работу браузера программно?


Ответы (0 шт):