두 페이지가 있습니다 : xyz.com/a
및 xyz.com/b
. 처음 xyz.com/b
로그인 해야만 액세스 할 수 있습니다 xyz.com/a
. 액세스하는 경우 xyz.com/b
다른 거치지 않고, 나는 단순히 브라우저를 통해 액세스가 거부 (로그인없이 리디렉션)을 얻는다. 에 로그인 xyz.com/a
하면 다른 계정에 액세스 할 수 있습니다.
내 문제는 curl 명령을 사용하여 수행하는 것입니다. xyz.com/a
curl 을 사용하여 성공적으로 로그인 할 수 있지만 시도 xyx.com/b
하면 액세스가 거부됩니다.
다음을 사용합니다.
curl --user user:pass https://xyz.com/a #works ok
curl https://xyz.com/b #doesn't work
사용자 / 암호 부분이없는 &없이 두 번째 줄을 사용해 보았지만 여전히 작동하지 않습니다. 두 페이지 모두 동일한 CA를 사용하므로 문제가되지 않습니다. 어떤 제안? 감사
답변
웹 사이트는 쿠키 를 사용하여 세션 정보를 저장합니다. 당신이 달릴 때
curl --user user:pass https://xyz.com/a #works ok
curl https://xyz.com/b #doesn't work
curl
두 개의 개별 세션에서 두 번 실행됩니다. 따라서 두 번째 명령이 실행되면 첫 번째 명령에서 설정 한 쿠키를 사용할 수 없습니다. 마치 a
한 브라우저 세션에서 페이지 에 로그인하고 다른 세션의 페이지 b
에 액세스하려고 시도한 것과 같습니다.
해야 할 일은 첫 번째 명령으로 생성 된 쿠키를 저장 하는 것입니다 .
curl --user user:pass --cookie-jar ./somefile https://xyz.com/a
두 번째를 실행할 때 다시 읽어보십시오.
curl --cookie ./somefile https://xyz.com/b
또는 동일한 쿠키를 사용하는 동일한 명령으로 두 파일을 모두 다운로드 할 수 있습니다.
답변
또한 브라우저를 통해 로그인하고 쿠키를 포함한 모든 헤더로 명령을받을 수 있습니다.
개발자 도구의 네트워크 탭을 열고 로그인 한 다음 필요한 페이지로 이동하여 “cURL로 복사”를 사용하십시오.
답변
인터넷 검색 후 다음을 발견했습니다.
curl -c cookie.txt -d "LoginName=someuser" -d "password=somepass" https://oursite/a
curl -b cookie.txt https://oursite/b
작동하는지는 모르겠지만 올바른 방향으로 인도 할 수 있습니다.
답변
내 대답은 @JoeMills 및 @user의 이전 답변의 모드입니다.
-
cURL
서버에 로그인 하는 명령을 가져옵니다.- 웹 사이트의 로그인 페이지를로드하고 개발자 도구의 네트워크 창을 엽니 다.
- Firefox에서 페이지를 마우스 오른쪽 버튼으로 클릭하고 ‘요소 검사 (Q)’를 선택한 다음 네트워크 탭을 클릭합니다.
- 로그인 양식으로 이동하여 사용자 이름, 비밀번호를 입력하고 로그인하십시오.
- 로그인 한 후 네트워크 창으로 돌아가서 상단으로 스크롤하여 POST 항목을 찾습니다. 마우스 오른쪽 버튼을 클릭하고 복사-> 컬로 복사를 선택합니다.
- 이것을 텍스트 편집기에 붙여넣고 명령 프롬프트에서 시도하여 작동하는지 확인하십시오.
- 일부 사이트는 우회하기 위해 아래 단계가 더 필요한 이러한 유형의 로그인 스푸핑을 차단하는 강화 기능이있을 수 있습니다.
- 웹 사이트의 로그인 페이지를로드하고 개발자 도구의 네트워크 창을 엽니 다.
-
로그인 후 세션 쿠키를 저장할 수 있도록 cURL 명령 수정
- 항목 제거
-H 'Cookie: <somestuff>'
curl
처음에 추가-c login_cookie.txt
- 이 업데이트 된 curl 명령을 실행
'login_cookie.txt'
하면 동일한 폴더에 새 파일이 생성 됩니다.
- 항목 제거
-
로그인이 필요한이 새 쿠키를 사용하여 새 웹 페이지를 호출하십시오.
curl -b login_cookie.txt <url_that_requires_log_in>
우분투 20.04에서 이것을 시도했으며 매력처럼 작동합니다.
답변
