어제 삽질하다
오늘도 삽질만 할 수는 없다 싶어서
script를 짰다.
결론적으로는
스크립트를 짜서 편해졌긴 하지만
아직 내가 얻고 싶은 성과는 못냈다.
어쨌든 wget 사용법을 쪼오끔 더 알게된김에
까먹지 말라고 포스팅 해야겠다.
* wget 의 옵션
1. --save-cookies [file]
말 그대로 cookie를 file에 저장시켜준다.
저장된 file의 형식을 보면
-------------------------------------------------
# HTTP cookie file.
# Generated by Wget on 2006-11-10 01:50:50.
# Edit at your own risk.
[url] TRUE / FALSE 0 [name] [value]
[url] TRUE / FALSE 0 [name2] [value2]
-------------------------------------------------
대강 이런 형식이다.
각각 무엇을 뜻하는지 정확히 모른다 -_-;;
나도 오늘 첨봐서;
url 부분은 아마 이 cookie가 유효한 Host 같고,
TRUE, FALSE는 뭔지 전혀 감이 안오고;
"/" 요건 아마 url과 비슷하게 cookie가 유효한 path 같고,
중요한건 역시 name과 value 부분이다.
사실 우리가 cookie를 봤을 때 보이는건
name=value;name2=value2;
이정도인데, 그걸 나타내는게 name, value이다.
name이 cookie내 변수 이름, value가 그 값이다.
요부분만 잘 보면 대부분 되지 싶다.
2. --keep-sesstion-cookies
정확히 무슨 옵션인지는 모르겠지만
대충 말 그대로 cookie를 유지하고 있게 해주는 옵션 인것 같다.
예를 들어, 내가 테스트한 wget 페이지는 회원 가입 페이지였는데
회원 가입을 하면서 cookie가 형성 되지만
wget이 끝나면서 연결도 끊어지므로
cookie도 사라지는 것 같다. (즉 browser가 닫히는 현상과 비슷한 것 같다)
이를 계속 유지해서 남겨두는게 이 옵션인것 같다.
man page를 살펴보면
"When specified, causes --save-cookies to also save session cookies. Session cookies are normally not saved because they are meant to be kept in memory and forgotten when you exit the browser."
그리고
"if you want --save-cookies to preserve them again, you must use --keep-session-cookies again."
즉, "--save-cookies" 옵션을 쓰기 위해서는 반드시 이 옵션을 사용해야만 한다.
3. --load-cookies [file]
wget으로 요청할 page에 cookie를 같이 보내고 싶다면
cookie를 저장한 file을 만들고 저 옵션을 적용하면 된다.
cookie 파일은 형식이 있어야 하는 것 같은데
1번에서 말했던 --save-cookies 옵션을 써서 저장된 cookie file 형식이면 적용 된다.
browser 마다 다른 format이 있는 것 같은데
이 옵션에 대한 man page를 보면 설명되어있다.
이 옵션을 쓰지 않고도 cookie를 보내는 방법에는
--header "Cookie: ~~"
이런식으로 해주면 된다.
4. --post-data [data]
이 옵션은 예전에도 한번 써봤던 적이 있던 것 같다.
이것 역시 말 그대로 post-data를 전송해주게 하는 옵션이다.
사용예를 들자면
wget --post-data "name=abc&pass=1234" [url]
그냥 이렇게 사용하면 된다.
즉, 페이지를 요청할때 필요한 post-data들을 그대로 적어주면 된다.
5. -O [file]
wget으로 요청한 page를 [file] 부분에 적은 이름, 경로로 저장해준다.
O는 아마 Output의 약자 일것이다.
man page를 보면
--output-document=file
랑도 같다고 나와있다.
6. -S, -d
우연히 알게 된 옵션인데
이것 역시 둘다 정확히 아는 옵션은 아니지만
크게 필요없는 것 같다.
-S는
wget을 할 때 전송되는 HTTP header를 보여준다.
-d는 --debug와 같은 옵션으로
header를 보여줄 뿐만 아니라
client와 server 간의 request와 response는 죄다 보여주는 느낌이다.
말그대로 debug를 하고 싶을 때 사용하면 좋을 것 같다.
//
오늘 짠 script에 사용된 옵션은 이정도이다.
이 외에 매우 다양한 wget 옵션이 있으나 사실 이외에 그닥 쓸 옵션은 없을 것 같다;
-r 정도?
그럼 오늘 짠 스크립트를 살짝 형식만 보면
------------------------------ wget.pl -------------------------------------------------
#!/usr/bin/perl
$url="http://~~/register.php";
$userID=$ARGV[0];
$data="~~~";
`wget --keep-session-cookies --save-cookies "cookie/$userID" --post-data "$data" -O tmp/"$userID"1 "$url"`;
$url=http://~~/out.php";
$data="~~~~";
`wget --load-cookies cookie/"$userID" --post-data "$data" -O tmp/"$userID"2 "$url"`;
--------------------------------------------------------------------------------------
$ARGV[0] 은 "./wget.pl [1]" 를 했을 경우 [1] 부분이 저장된다.
C의 경우에는 argv[0] 이라면 "./wget.pl" 이 들어가지만 perl 의 경우는 다르다.
그리고 perl 에서 `command` 가
system(command)랑 같다.
위 스크립트가 하는 짓은
처음에 $data에 회원 정보를 넣어서 wget으로 회원 가입을 하면서
생긴 cookie를 저장하고
두번째 wget을 할 때 그 cookie를 load 하면서 탈퇴한다.
(탈퇴하는 페이지가 cookie를 필요로했었다)
wget으로 하면서 다운 받은 page들은
tmp 에 저장되고 있다.
이 스크립트를 완성해서
아주 상당히 편해졌다.
역시 wget -_-)b
오늘도 삽질만 할 수는 없다 싶어서
script를 짰다.
결론적으로는
스크립트를 짜서 편해졌긴 하지만
아직 내가 얻고 싶은 성과는 못냈다.
어쨌든 wget 사용법을 쪼오끔 더 알게된김에
까먹지 말라고 포스팅 해야겠다.
* wget 의 옵션
1. --save-cookies [file]
말 그대로 cookie를 file에 저장시켜준다.
저장된 file의 형식을 보면
-------------------------------------------------
# HTTP cookie file.
# Generated by Wget on 2006-11-10 01:50:50.
# Edit at your own risk.
[url] TRUE / FALSE 0 [name] [value]
[url] TRUE / FALSE 0 [name2] [value2]
-------------------------------------------------
대강 이런 형식이다.
각각 무엇을 뜻하는지 정확히 모른다 -_-;;
나도 오늘 첨봐서;
url 부분은 아마 이 cookie가 유효한 Host 같고,
TRUE, FALSE는 뭔지 전혀 감이 안오고;
"/" 요건 아마 url과 비슷하게 cookie가 유효한 path 같고,
중요한건 역시 name과 value 부분이다.
사실 우리가 cookie를 봤을 때 보이는건
name=value;name2=value2;
이정도인데, 그걸 나타내는게 name, value이다.
name이 cookie내 변수 이름, value가 그 값이다.
요부분만 잘 보면 대부분 되지 싶다.
2. --keep-sesstion-cookies
정확히 무슨 옵션인지는 모르겠지만
대충 말 그대로 cookie를 유지하고 있게 해주는 옵션 인것 같다.
예를 들어, 내가 테스트한 wget 페이지는 회원 가입 페이지였는데
회원 가입을 하면서 cookie가 형성 되지만
wget이 끝나면서 연결도 끊어지므로
cookie도 사라지는 것 같다. (즉 browser가 닫히는 현상과 비슷한 것 같다)
이를 계속 유지해서 남겨두는게 이 옵션인것 같다.
man page를 살펴보면
"When specified, causes --save-cookies to also save session cookies. Session cookies are normally not saved because they are meant to be kept in memory and forgotten when you exit the browser."
그리고
"if you want --save-cookies to preserve them again, you must use --keep-session-cookies again."
즉, "--save-cookies" 옵션을 쓰기 위해서는 반드시 이 옵션을 사용해야만 한다.
3. --load-cookies [file]
wget으로 요청할 page에 cookie를 같이 보내고 싶다면
cookie를 저장한 file을 만들고 저 옵션을 적용하면 된다.
cookie 파일은 형식이 있어야 하는 것 같은데
1번에서 말했던 --save-cookies 옵션을 써서 저장된 cookie file 형식이면 적용 된다.
browser 마다 다른 format이 있는 것 같은데
이 옵션에 대한 man page를 보면 설명되어있다.
이 옵션을 쓰지 않고도 cookie를 보내는 방법에는
--header "Cookie: ~~"
이런식으로 해주면 된다.
4. --post-data [data]
이 옵션은 예전에도 한번 써봤던 적이 있던 것 같다.
이것 역시 말 그대로 post-data를 전송해주게 하는 옵션이다.
사용예를 들자면
wget --post-data "name=abc&pass=1234" [url]
그냥 이렇게 사용하면 된다.
즉, 페이지를 요청할때 필요한 post-data들을 그대로 적어주면 된다.
5. -O [file]
wget으로 요청한 page를 [file] 부분에 적은 이름, 경로로 저장해준다.
O는 아마 Output의 약자 일것이다.
man page를 보면
--output-document=file
랑도 같다고 나와있다.
6. -S, -d
우연히 알게 된 옵션인데
이것 역시 둘다 정확히 아는 옵션은 아니지만
크게 필요없는 것 같다.
-S는
wget을 할 때 전송되는 HTTP header를 보여준다.
-d는 --debug와 같은 옵션으로
header를 보여줄 뿐만 아니라
client와 server 간의 request와 response는 죄다 보여주는 느낌이다.
말그대로 debug를 하고 싶을 때 사용하면 좋을 것 같다.
//
오늘 짠 script에 사용된 옵션은 이정도이다.
이 외에 매우 다양한 wget 옵션이 있으나 사실 이외에 그닥 쓸 옵션은 없을 것 같다;
-r 정도?
그럼 오늘 짠 스크립트를 살짝 형식만 보면
------------------------------ wget.pl -------------------------------------------------
#!/usr/bin/perl
$url="http://~~/register.php";
$userID=$ARGV[0];
$data="~~~";
`wget --keep-session-cookies --save-cookies "cookie/$userID" --post-data "$data" -O tmp/"$userID"1 "$url"`;
$url=http://~~/out.php";
$data="~~~~";
`wget --load-cookies cookie/"$userID" --post-data "$data" -O tmp/"$userID"2 "$url"`;
--------------------------------------------------------------------------------------
$ARGV[0] 은 "./wget.pl [1]" 를 했을 경우 [1] 부분이 저장된다.
C의 경우에는 argv[0] 이라면 "./wget.pl" 이 들어가지만 perl 의 경우는 다르다.
그리고 perl 에서 `command` 가
system(command)랑 같다.
위 스크립트가 하는 짓은
처음에 $data에 회원 정보를 넣어서 wget으로 회원 가입을 하면서
생긴 cookie를 저장하고
두번째 wget을 할 때 그 cookie를 load 하면서 탈퇴한다.
(탈퇴하는 페이지가 cookie를 필요로했었다)
wget으로 하면서 다운 받은 page들은
tmp 에 저장되고 있다.
이 스크립트를 완성해서
아주 상당히 편해졌다.
역시 wget -_-)b
댓글을 달아 주세요