) ESPN의 환상적인 축구 경기에서 판타지 풋볼 통계를 긁어내는 애완 동물 프로젝트를 진행 중입니다. 내가 과거에 갈 수없는 문제는 내가 리그의 페이지를 요청하기 전에 필요한 로그인입니다.JSON 객체 POST POST 요청 (
내가 공격 URL은 GET보고
http://games.espn.com/ffl/leaguesetup/ownerinfo?leagueId=123456&seasonId=2016
및 의한
내가로 리디렉션 것 같습니다 요청 어느 immedi ately 나를 로그인 프롬프트 창으로 데려다줍니다. 로그인 할 때 POST 요청을 검사하고 모든 요청 헤더를 기록하십시오. 내가이 짓을 요청 헤더와 JSON 객체를 사용
{"loginValue":"myusername","password":"mypassword"}
다음 POST에 요청 된 URL 내가 반대 다음과 같은 JSON이 함께 전달됩니다 언급
추가https://registerdisney.go.com/jgc/v5/client/ESPN-FANTASYLM-PROD/guest/login?langPref=en-US
처럼 보이는 다음 :
String url = "http://games.espn.com/ffl/leaguesetup/ownerinfo?leagueId=123456&seasonId=2016"; String rawData = "{\"loginValue\":\"myusername\",\"password\":\"mypassword\"}"; URL obj = new URL(url); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); con.setRequestMethod("POST"); con.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); con.setRequestProperty("Accept-Encoding", "gzip, deflate"); con.setRequestProperty("Accept-Language", "en-US,en;q=0.5"); con.setRequestProperty("Authorization", "APIKEY 8IYGqTgmpFTX51iF1ldp6MBtWrdQ0BxNUf8bg5/empOdV4u16KUSrnkJqy1DXy+QxV8RaxKq45o2sM8Omos/DlHYhQ=="); con.setRequestProperty("Cache-Control", "no-cache"); con.setRequestProperty("Content-Length", "52"); con.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); con.setRequestProperty("Expires", "-1"); con.setRequestProperty("Host", "registerdisney.go.com"); con.setRequestProperty("Origin", "https://cdn.registerdisney.go.com"); con.setRequestProperty("Pragma", "no-cache"); con.setRequestProperty("Referer", "https://cdn.registerdisney.go.com/v2/ESPN-ESPNCOM-PROD/en-US?include=config,l10n,js,html&scheme=http&postMessageOrigin=http%3A%2F%2Fwww.espn.com%2F&cookieDomain=www.espn.com&config=PROD&logLevel=INFO&topHost=www.espn.com&ageBand=ADULT&countryCode=US&cssOverride=https%3A%2F%2Fsecure.espncdn.com%2Fcombiner%2Fc%3Fcss%3Ddisneyid%2Fcore.css&responderPage=https%3A%2F%2Fwww.espn.com%2Flogin%2Fresponder%2Findex.html&buildId=157599bfa88"); con.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0"); con.setRequestProperty("conversation-id", "5a4572f4-c940-454c-8f86-9af27345c894, adffddd3-8c31-41a0-84d7-7a0401cd2ad0"); con.setRequestProperty("correlation-id", "4d9ddc78-b00e-4c5a-8eec-87622961fd34") con.setDoOutput(true);` OutputStreamWriter w = new OutputStreamWriter(con.getOutputStream(), "UTF-8"); w.write(rawData); w.close(); int responseCode = con.getResponseCode(); BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close();
400 URL에 대한 : 다음과 같은 경우에 발생 또는 어떤 https://registerdisney.go.com/jgc/v5/client/ESPN-FANTASYLM-PROD/guest/login?langPref=en-US
모든 아이디어를 내가 현재 서버에서 다시 얻고 무엇을 올바른 궤도에있어 suming 것은 서버가
반환 된 HTTP 응답 코드 내가 여기서 완전히 잘못된 접근을하고 있니? JSoup를 사용하려고했지만 운이 없었고 JSoup 밑에서 HttpUrlConnection도 사용한다고 생각합니다.
GET 요청을 먼저 수행하고, 저장 한 다음 POST 요청을 수행해야합니까? 어떻게 작동해야합니까?
UI 테스트를 자동화하기 위해 Selenium과 협력 해 왔지만 훌륭하게 작동합니다.하지만 실제로 여기있는 부분이 아닙니다. 내가 원했던/필요로하는 것은 브라우저를 시작하지 않고도 HTML을 검색 할 수 있다는 것입니다. –
브라우저를 시작하지 않고도 복잡한 웹 사이트, 특히 사용자 상호 작용이있는 웹 사이트에서 HTML을 검색하는 것은 거의 불가능합니다. 하나의 상호 작용을 모방하려는 경우 프로그래밍 방식으로 진행될 수 있습니다 (쿠키 관리는 재미 없습니다). 그러나이 방법은 확장되지 않습니다. – Julien