다른 페이지에서 로그인이 필요한 페이지에 액세스하기 위한 CURL
2페이지가 있습니다.xyz.example/a
그리고.xyz.example/b
액세스 할 수 있는 것은,xyz.example/b
에 로그인하는 경우에만xyz.example/a
첫 번째, 접속하는 경우xyz.example/b
다른 것을 거치지 않고 브라우저를 통해 액세스가 거부됩니다(로그인 리다이렉트 없음).로그인하면xyz.example/a
다른 쪽에도 접속할 수 있습니다.
문제는 curl 명령어를 사용하여 이 동작을 하는 것입니다.에 정상적으로 로그인 할 수 있다xyz.example/a
컬을 사용하지만, 그 다음에 시도해 보세요.xyz.example/b
접근이 거부됩니다.
다음을 사용합니다.
curl --user user:pass https://xyz.example/a #works ok
curl https://xyz.example/b #doesn't work
사용자/비밀번호 부분과 함께 두 번째 줄을 사용해보았으나 아직 작동하지 않습니다.두 페이지 모두 동일한 CA를 사용하므로 문제 없습니다.
웹 사이트에서는 쿠키를 사용하여 세션 정보를 저장할 수 있습니다.달릴 때
curl --user user:pass https://xyz.example/a #works ok
curl https://xyz.example/b #doesn't work
curl
는 2개의 세션으로2회 실행됩니다.따라서 두 번째 명령어가 실행되면 첫 번째 명령어로 설정된 쿠키를 사용할 수 없습니다.이것은 마치 페이지에 로그인한 것과 같습니다.a
1개의 브라우저 세션에서 페이지 접근을 시도했습니다.b
다른 방법으로요
첫 번째 명령어로 작성된 쿠키를 저장해야 합니다.
curl --user user:pass --cookie-jar ./somefile https://xyz.example/a
두 번째 실행 시 다시 읽습니다.
curl --cookie ./somefile https://xyz.example/b
또는 동일한 명령어로 두 파일을 다운로드하여 동일한 쿠키를 사용할 수도 있습니다.
또한 브라우저를 통해 로그인하여 cookie를 포함한 모든 헤더와 함께 명령을 받을 수도 있습니다.
Developer Tools의 Network 탭을 열고 로그인한 후 필요한 페이지로 이동하여 "Copy as cURL"을 사용합니다.
검색해 본 결과, 다음과 같이 나타났습니다.
curl -c cookie.txt -d "LoginName=someuser" -d "password=somepass" https://oursite/a
curl -b cookie.txt https://oursite/b
효과가 있을지는 모르겠지만, 올바른 방향으로 인도해 줄지도 몰라요.
제 답변은 @JoeMills와 @user의 몇 가지 이전 답변입니다.
취득하다
cURL
서버에 로그인하는 명령어:- 웹 사이트의 로그인 페이지를 로드하고 개발자 도구의 네트워크 창을 엽니다.
- 파이어폭스에서 페이지를 마우스 오른쪽 버튼으로 클릭하고 '요소 검사(Q)'를 선택한 후 네트워크 탭을 클릭합니다.
- 로그인 폼으로 이동하여 사용자 이름, 비밀번호를 입력하고 로그인합니다.
- 로그인 후 [Network]페인으로 돌아가 맨 위로 스크롤하여 POST 엔트리를 찾습니다.오른쪽 버튼을 클릭하여 [Copy]-> [ Curl as Curl ]를 선택합니다.
- 텍스트 편집기에 붙여넣고 명령 프롬프트에서 실행해 보고 작동 여부를 확인합니다.
- 일부 사이트에서는 이러한 유형의 로그인 스푸핑을 차단하는 강화 기능이 있을 수 있습니다.이러한 스푸핑을 바이패스하려면 다음 단계를 수행해야 합니다.
- 웹 사이트의 로그인 페이지를 로드하고 개발자 도구의 네트워크 창을 엽니다.
로그인 후 세션쿠키를 저장할 수 있도록 cURL 명령어를 변경합니다.
- 합니다.
-H 'Cookie: <somestuff>'
- 에
curl
-c login_cookie.txt
- 을 실행하면 새 "" 을 수 .
'login_cookie.txt'
- 합니다.
이 새 쿠키를 사용하여 로그인해야 하는 새 웹 페이지를 호출합니다.
curl -b login_cookie.txt <url_that_requires_log_in>
Ubuntu 20.04에서 시험해 봤는데 아주 잘 작동해요.
언급URL : https://stackoverflow.com/questions/12399087/curl-to-access-a-page-that-requires-a-login-from-a-different-page
'bestsource' 카테고리의 다른 글
WPF에서의 탭 순서 설정 (0) | 2023.04.19 |
---|---|
WPF: TextBox에서 포커스를 프로그래밍 방식으로 삭제하는 방법 (0) | 2023.04.19 |
ListView에서 부모로 스크롤 이벤트 버블링 (0) | 2023.04.19 |
Swift를 사용하여 루트 보기로 팝업하려면 어떻게 해야 합니까?UI? (0) | 2023.04.19 |
VBA를 사용하여 파일이 있는지 확인합니다. (0) | 2023.04.14 |