Использую okhttp3 для работы с запросами.
Первым делом отсылаю запрос на instagram.com и получаю куки (в которых есть csrftoken для дальнейшей авторизации)
Потом авторизую пользователя отправляя его POST запросом на и записываю все куки в массив (если приходят обновления - обновляю)
Следующим делом иду на страницу получения CODE (для дальнейшего запроса токена) и получаю дефолтную страницу что-то типа
prntscr.com/akttxx
Тут мне нужно нажать кнопку Authorize отправив на эту-же страницу post запрос с параметрами allow=Authorize и csrfmiddlewaretoken=csrftoken_который_получили (Методом научного тыка отследив через f12 всю цепочку авторизации я выяснил что это он)
и вот тут появляется проблема: возвращается вот такая ошибка: Не удалось загрузить страницу. Если в браузере отключены cookies или вы используете безопасный режим браузера, попробуйте включить cookies или выключить безопасный режим, а затем повторите свои действия.
Однако, если бы мы не включали куки - мы бы не авторизовались.
Вот примерный говнокод:
Headers.Builder headers = new Headers.Builder();
String currentCookie = "";
get("https://www.instagram.com/", headers.build());
csrfToken = cookies[1].toString().split("=")[1].split(";")[0];
FormBody.Builder body = new FormBody.Builder();
body.add("username", login);
body.add("password", password);
int i = 0;
while(cookies[i] != null) {
currentCookie += cookies[i].name()+"="+cookies[i].value()+"; ";
i++;
}
currentCookie += "ig_pr=1; ig_vw=1920;";
headers.add("cookie", currentCookie);
headers.add("accept", "*/*");
headers.add("origin", "https://www.instagram.com"); // получили изначальные куки
headers.add("content-length", "19");
headers.add("accept-language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4");
headers.add("referer", "https://www.instagram.com/");
headers.add("user-agen", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36");
headers.add("content-type", "application/x-www-form-urlencoded; charset=UTF-8");
headers.add("x-csrftoken", csrfToken);
headers.add("x-instagram-ajax", "1");
headers.add("x-requested-with", "XMLHttpRequest");
post("https://www.instagram.com/accounts/login/ajax/", body.build(), headers.build()); // авторизовались.
currentCookie = "";
i = 0;
while(cookies[i] != null) {
currentCookie += cookies[i].name()+"="+cookies[i].value()+"; ";
i++;
}
headers = new Headers.Builder();
currentCookie += "ig_pr=1; ig_vw=1920;";
headers.add("cookie", currentCookie);
headers.add("accept-language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4");
headers.add("user-agen", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36");
headers.add("upgrade-insecure-requests", "1");
Response rr = get("https://www.instagram.com/oauth/authorize/?client_id=976226ea8cf547a5bb2817b82a852c1e&redirect_uri=http://localhost&response_type=code", headers.build()); // попытка получить редирект на прямую
if(rr.code() != 302) { // если попытка провалилась (пришла форма, где нам нужно нажать кнопку) - мы нажимаем на кнопку
currentCookie = "";
i = 0;
while(cookies[i] != null) {
currentCookie += cookies[i].name()+"="+cookies[i].value()+"; ";
i++;
}
headers = new Headers.Builder();
currentCookie += "ig_pr=1; ig_vw=1920; s_network=;";
headers.add("cookie", currentCookie);
headers.add("accept-language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4");
headers.add("user-agen", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36");
headers.add("upgrade-insecure-requests", "1");
headers.add("origin", "https://www.instagram.com");
headers.add("referer", "https://www.instagram.com/oauth/authorize/?client_id=976226ea8cf547a5bb2817b82a852c1e&redirect_uri=http://localhost&response_type=code");
headers.add("content-length", "68");
headers.add("content-type","application/x-www-form-urlencoded; charset=UTF-8");
headers.add("cache-control","max-age=0");
headers.add("accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
body = new FormBody.Builder();
body.add("csrfmiddlewaretoken", csrfToken);
body.add("allow", "Authorize");
rr = post("https://www.instagram.com/oauth/authorize/?client_id=976226ea8cf547a5bb2817b82a852c1e&redirect_uri=http://localhost&response_type=code", body.build(), headers.build()); // вот тут приходит 403 ошибка которая гласит, что куки не включены
}