bestsource

다른 페이지에서 로그인이 필요한 페이지에 액세스하기 위한 CURL

bestsource 2023. 4. 19. 23:18
반응형

다른 페이지에서 로그인이 필요한 페이지에 액세스하기 위한 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회 실행됩니다.따라서 두 번째 명령어가 실행되면 첫 번째 명령어로 설정된 쿠키를 사용할 수 없습니다.이것은 마치 페이지에 로그인한 것과 같습니다.a1개의 브라우저 세션에서 페이지 접근을 시도했습니다.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의 몇 가지 이전 답변입니다.

  1. 취득하다cURL서버에 로그인하는 명령어:

    • 웹 사이트의 로그인 페이지를 로드하고 개발자 도구의 네트워크 창을 엽니다.
      • 파이어폭스에서 페이지를 마우스 오른쪽 버튼으로 클릭하고 '요소 검사(Q)'를 선택한 후 네트워크 탭을 클릭합니다.
    • 로그인 폼으로 이동하여 사용자 이름, 비밀번호를 입력하고 로그인합니다.
    • 로그인 후 [Network]페인으로 돌아가 맨 위로 스크롤하여 POST 엔트리를 찾습니다.오른쪽 버튼을 클릭하여 [Copy]-> [ Curl as Curl ]를 선택합니다.
    • 텍스트 편집기에 붙여넣고 명령 프롬프트에서 실행해 보고 작동 여부를 확인합니다.
      • 일부 사이트에서는 이러한 유형의 로그인 스푸핑을 차단하는 강화 기능이 있을 수 있습니다.이러한 스푸핑을 바이패스하려면 다음 단계를 수행해야 합니다.
  2. 로그인 후 세션쿠키를 저장할 수 있도록 cURL 명령어를 변경합니다.

    • 합니다.-H 'Cookie: <somestuff>'
    • curl-c login_cookie.txt
    • 을 실행하면 새 "" 을 수 .'login_cookie.txt'
  3. 이 새 쿠키를 사용하여 로그인해야 하는 새 웹 페이지를 호출합니다.

    • 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

반응형