这是此答案的后续问题:Link Here

基于该答案,我能够绕过byethost托管所使用的testcookie-nginx-module的安全检查。

问题是我使用的cookie是从Web浏览器复制的。我需要使用我的Android设备从我的网站获取COOKIE,以便可以使用它在byethost服务器上发出请求。

Byethost提供一个__test cookie来检查现有会话上请求的有效性,如果看来我访问服务器的唯一方法是成为“有效的浏览器”,如何告诉服务器我有效从android设备浏览器?这样我就可以将cookie分配给网络浏览器。

最佳答案

我遇到了同样的问题,首先我使用WebView来访问页面并获取cookie,然后使用它绕过testcookie-nginx-module的安全性检查

    WebView myWebView = new WebView(this);
    myWebView.getSettings().setJavaScriptEnabled(true);
    myWebView.loadUrl("my_page_here");

    String cookies = CookieManager.getInstance().getCookie("my_page_here");
    System.out.println(cookies);
    myWebView.destroy();


然后与Volley一起使用,我创建了一个CustomRequest扩展StringRequest并重写getHeaders,如下所示:

@Override
public Map<String, String> getHeaders() throws AuthFailureError {
    Map<String, String> params = new HashMap<String, String>();
    params.put("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240 ");
    params.put("Cookie", cookies+"; expires=Fri, 1-Jan-38 06:55:55 GMT; path=/");
    params.put("Content-Type", "application/x-www-form-urlencoded");
    return params;
}


仅此而已,您还有其他解决方案吗?如果没有,你可以检查一下:D

10-05 21:52