2017-12-29 11 views
1

curl/wget으로 올바른 리디렉션 된 URL을 얻으려면 어떻게해야합니까?curl/wget은 리디렉션 할 때 브라우저와 동일한 URL을 확인하지 않습니다.

대상 URL :

    크롬/파이어 폭스처럼 곱슬 곱슬/wget을에게

브라우저를 통과 할 때 %3B; (세미콜론)을 탈출 할 필요가

  • https://www.codeaurora.org/gitweb/quic/la/?p=kernel/msm-3.18.git;a=commit;h=430f3805c82634a3cb969d83acc4fc4c0ee6af27
  • 가의 해결 타겟 URL 위의 URL이 commit 인 다음 URL로 연결되는 것으로 예상되는 결과입니다.

    은 그러나 두 컬과 wget을 tree을 포함하는 다음 URL을 대상 URL를 해결하고이 동작을 예상되지 않습니다.

    리디렉션 URL의 존중

    commit 또는 tree을 포함하며, 그것은 gitweb 문제 대신 곱슬 곱슬/wget을 수 있습니다. curl/wget을 사용하여 올바른 리디렉션 된 URL을 얻으려면 어떻게해야합니까? User-Agent를 바꾸려면 무기력해야합니다. 어떤 아이디어? 다음과 같이 내 컬 명령은 다음과 같습니다

    $ curl -v -L -o output.html \ 
    https://www.codeaurora.org/gitweb/quic/la/?p=kernel/msm-3.18.git%3Ba=commit%3Bh=430f3805c82634a3cb969d83acc4fc4c0ee6af27 
    
  • 답변

    1

    내가 문제가 당신이 인코딩 프로젝트 이름의 일부입니다 /를 URL로해야한다는 것을 발견했다. ;%3B으로 인코딩하면 나를 찾아 냈습니다. URL이 ;이 포함되어 있기 때문에

    또한,이 명령 구분이기 때문에이를 인용 할 필요가있다.

    curl -v -L -o output.html \ 
    'https://www.codeaurora.org/gitweb/quic/la/?p=kernel/msm-3.18.git;a=commit;h=430f3805c82634a3cb969d83acc4fc4c0ee6af27' 
    

    이 될 수도

    curl -v -L -o output.html \ 
    'https://www.codeaurora.org/gitweb/quic/la/?p=kernel%2fmsm-3.18.git;a=commit;h=430f3805c82634a3cb969d83acc4fc4c0ee6af27' 
    

    또는 단순히를 :

    쿼리 문자열에서

    p=kernel/msm-3.18p=kernel%2fmsm-3.18

    나는 다음과 같은 두 가지 컬 명령이 작동하도록 할 수 있었다 있어야한다 소프트웨어가 원시 매개 변수를 읽고 % 3B를 디코딩하지 않고 쿼리 문자열에서 세미콜론을 예상하기 때문입니다.

    희망 하시겠습니까?

    +0

    감사합니다. 이제는 의미가 있습니다. 세미콜론은 URL 매개 변수가 아닌 명령 구분자로 구문 분석됩니다. – forte916

    관련 문제