Akamai绕过(Java):Zalando自动下单Bot结账请求拦截问题排查
Zalando自动下单Bot结账环节失败问题
我开发了一个针对Zalando网站的自动下单Bot,从登录到添加商品至购物车的流程均正常,但在最后结账生成PayPal链接的环节失败,返回错误:
{ "edge_error": "halt", "ref_id": "18.57c51102.1663765843.299fc0e", "wait": 60, "feedback": { "email": true, "url": "", "recaptcha": { "enabled": false, "type": 0, "sitekey": "" } } }
我推测该问题与网站防护机制、缺失请求头/Cookie或未设置延迟有关,但无法确定具体原因。以下是用于发起结账请求的Java代码:
public void makePostJsonRequest(WebDriver driver, String eTag, String checkoutID) { retrieveCookiesMap(driver); HttpClient httpClient = new DefaultHttpClient(); try { HttpPost postRequest = new HttpPost("https://www.zalando.be/api/checkout/buy-now"); postRequest.setHeader("authority", "www.zalando.be"); postRequest.setHeader("accept", "application/json"); postRequest.setHeader("accept-language", "en-US,en;q=0.9"); postRequest.setHeader("content-type", "application/json"); postRequest.setHeader("cookie", "language-preference=nl;" + " Zalando-Client-Id=" + cookiesMap.get("Zalando-Client-Id") + ";" + " ncx=f;" + " _gcl_au=" + cookiesMap.get("_gcl_au") + ";" + " sqt_cap=" + cookiesMap.get("sqt_cap") + ";" + " _ga=" + cookiesMap.get("_ga") + ";" + " _gid=" + cookiesMap.get("_gid") + ";" + " bm_sz=" + cookiesMap.get("bm_sz") + ";" + " ak_bms=" + cookiesMap.get("ak_bms") + ";" + " _gat_zalga=1;" + " mpulseinject=false;" + " frsx=" + cookiesMap.get("frsx") + ";" + " zsa=" + cookiesMap.get("zsa") + ";" + " zsr=" + cookiesMap.get("zsr") + ";" + " zsi=" + cookiesMap.get("zsi") + ";" + " bm_sv=" + cookiesMap.get("bm_sv") + ";" + " _abck=" + cookiesMap.get("_abck") + ";"); postRequest.setHeader("origin", "https://www.zalando.be"); postRequest.setHeader("referer", "https://www.zalando.be/checkout/confirm"); postRequest.setHeader("sec-ch-ua", "\"Chromium\";v=\"104\", \" Not A;Brand\";v=\"99\", \"Google Chrome\";v=\"104\""); postRequest.setHeader("sec-ch-ua-mobile", "?0"); postRequest.setHeader("sec-ch-ua-platform", "\"Linux\""); postRequest.setHeader("sec-fetch-dest", "empty"); postRequest.setHeader("sec-fetch-mode", "cors"); postRequest.setHeader("sec-fetch-site", "same-origin"); postRequest.setHeader("user-agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"); postRequest.setHeader("x-xsrf-token", cookiesMap.get("frsx")); postRequest.setHeader("x-zalando-checkout-app", "web"); postRequest.setHeader("x-zalando-footer-mode", "desktop"); postRequest.setHeader("x-zalando-header-mode", "desktop"); eTag = StringUtils.chop(eTag); eTag += "\\"; String jsonString = "{\"checkoutId\":\"" + checkoutID + "\"," + "\"eTag\":" + "\"\\" + eTag + "\"" + "\"" + "}"; System.out.println(jsonString); StringEntity entity = new StringEntity(jsonString); postRequest.setEntity(entity); long startTime = System.currentTimeMillis(); HttpResponse response = httpClient.execute(postRequest); long elapsedTime = System.currentTimeMillis() - startTime; System.out.println("Time taken : "+elapsedTime+"ms"); InputStream is = response.getEntity().getContent(); Reader reader = new InputStreamReader(is); BufferedReader bufferedReader = new BufferedReader(reader); StringBuilder builder = new StringBuilder(); while (true) { try { String line = bufferedReader.readLine(); if (line != null) { builder.append(line); } else { break; } } catch (Exception e) { e.printStackTrace(); } } System.out.println(builder.toString()); System.out.println("****************"); } catch (Exception ex) { ex.printStackTrace(); } }
内容的提问来源于stack exchange,提问作者Bryan Jeetun
相关产品推荐
相关产品推荐

