2013-05-31 33 views
7

Tôi muốn thử chuyển tập lệnh bash của tôi từ linux sang powershell nhưng không thể hiểu tại sao nó không thành công.Làm thế nào để làm wget với cookie trong PowerShell

Linux lệnh:

wget -q -x --user-agent="blablabla" --keep-session-cookies --load-cookies cook.txt http://site.com/qqq 

đang PowerShell:

$source = "http://site.com/qqq" 
$destination = "d:\site\qqq" 

$wc = New-Object System.Net.WebClient 
$wc.DownloadFile($source, $destination) 

nhưng mã này chỉ tải trang mà không cần cookie. Và tôi không thể tìm thấy làm thế nào tôi có thể gửi PHPSESSID đến trang web.

Vui lòng giải thích cho tôi cách thực hiện.

+0

Bạn có muốn chọn một cửa sổ không? http://superuser.com/questions/25538/what-is-the-windows-equivalent-of-wget – PeskyGnat

Trả lời

11

Ok để bạn có hai tùy chọn.

  1. Chạy wget trên Windows.
  2. Đặt thuộc tính trên đối tượng webclient thành sao chép chức năng do cờ wget đặt.

Cách đầu tiên dễ dàng, chỉ cần tải xuống Windows version of wget.

Đây là mã cho mã thứ hai.

$source = "http://site.com/qqq" 
$destination = "d:\site\qqq" 

$wc = New-Object System.Net.WebClient 
# Single Example 
$wc.Headers.Add([System.Net.HttpRequestHeader]::Cookie, "name=value") 
# Multi Example 
$wc.Headers.Add([System.Net.HttpRequestHeader]::Cookie, "name=value; name2=value2"); 
$wc.DownloadFile($source, $destination) 

Xem bên trong tệp cookie.txt của bạn để nhận cặp giá trị tên.

Tôi không chắc chắn cách sao chép chức năng -x của wget. Cung cấp cho các bên trên một thử và xem những gì nó với tập tin sau khi tải về.

Lưu ý - Tôi không thể kiểm tra điều này ...

+0

Rất thú vị. Khi tôi sử dụng wget với cookie, trang web đã tải xuống. Nhưng nếu tôi sử dụng powerhell với cookie, tôi không có kết quả. Có lẽ tôi cần gửi dữ liệu POST đến trang web? – user2441498

+1

@ user2441498 Sử dụng trình điều khiển để giám sát việc chụp những gì wget đang gửi đến máy chủ. Lưu ý - bạn có thể buộc phải sử dụng proxy. –

+0

Ví dụ hay! Tuy nhiên, đối với người dùng PowerShellCore (windows nano server), không gian tên System.Net.WebClient dường như không tồn tại, thật không may. –

Các vấn đề liên quan