Cách nhập thông tin đăng nhập cho một trang web từ dòng lệnh linux


25

Kết nối internet của tôi được cung cấp bởi các trường đại học. Nó được bảo vệ để kết hợp tên người dùng / mật khẩu. Điều này có nghĩa là khi tôi khởi động máy tính, tôi phải khởi động trình duyệt web và mở một trang web tùy ý. Sau đó tôi được chuyển hướng đến một trang, trong đó (trong số những thứ khác) có chứa hai hình thức. Trong những điều này tôi phải nhập tên người dùng và mật khẩu. Tôi quản lý để làm điều này với firefox (có thể lưu mật khẩu) và cũng với các liên kết (tải nhanh hơn và từ dòng lệnh).

Có cách nào để tự động hóa quá trình đăng nhập bằng cách sử dụng tập lệnh bash không? Điều này sẽ cho phép thực hiện đăng nhập khi khởi động, để nó đã ở đó khi tôi khởi động máy chủ X.


1
Bạn thể gọi trực tiếp tập lệnh đăng nhập từ ACTIONthuộc tính của biểu mẫu curl.
terdon

Nhiều trường đại học cũng cung cấp một mạng sử dụng "Xác thực doanh nghiệp" (nghĩa là sử dụng tên người dùng / mật khẩu cho chính kết nối mạng, thay vì đợi cho đến khi bạn cố gắng truy cập một trang để yêu cầu thông tin đăng nhập). Khả năng lưu trữ thông tin mạng như vậy được xây dựng trong HĐH. Nó cũng an toàn hơn nhiều vì điều đó có nghĩa là người khác khó rình mò kết nối của bạn hơn. Nếu trường đại học của bạn hỗ trợ điều đó, bạn nên chuyển sang nó.
Moshe Katz

Nó cũng sẽ giúp chúng tôi nếu bạn có thể đưa ra một ví dụ (ẩn danh) về URL mà bạn được chuyển hướng đến khi đăng nhập. (Ẩn danh ở đây có nghĩa là bạn nên xóa Địa chỉ MAC và / hoặc địa chỉ IP khỏi URL nếu chúng ở đó, nhưng để lại mọi thứ khác, bao gồm tên của trường Đại học.)
Moshe Katz

Câu trả lời:


16

Bạn có thể dùng thử với curl , bạn có thể chỉ cần sử dụng curl như thế này để đăng nhập vào trang web:

curl --user name:password http://somesite.com -v 

Bạn có thể truyền Dữ liệu đến trang web như thế này từ câu trả lời của Stackoverflow

    curl -b cookies.txt -c cookies.txt --data "Username=xx&Password=xx&Login=Login" [urlthatyour form submits]

bạn cần cookie nếu bạn muốn thực hiện một yêu cầu curl khác sau khi đăng nhập. id phiên trong cookie sẽ giúp yêu cầu curl tiếp theo được ủy quyền.

Nếu bạn không muốn dùng cookie, bạn có thể sử dụng

curl --data "Username=xx&Password=xx&Login=Login" [url that your form submits]

Bạn cũng có thể tham khảo thêm tại đây cho các lệnh đặc biệt


1
Tôi không thể thử điều này ngay bây giờ, nhưng tôi hy vọng rằng nó sẽ chỉ hoạt động khi có một hộp thoại yêu cầu mật khẩu khi mở trang web. Trong trường hợp của tôi chỉ có hai hình thức. Một cho tên và một cho mật khẩu. Tôi sẽ thay đổi câu hỏi để làm cho điều này rõ ràng hơn.
Tim

@Tim đã thêm cách truyền dữ liệu, thông thường Bạn sẽ cần tìm hiểu trang nào trang yêu cầu (hoặc giá trị hành động của trang).
Blue tweet - Vignesh4303

Điều này nghe có vẻ như nó có thể làm việc, nhưng thật đáng buồn là nó đã không. Khi nhìn vào đầu ra của curl cho thấy Usernametrường được điền chính xác với giá trị chính xác, nhưng Passwordtrường thì không (điều này có thể đúng như một biện pháp bảo mật). Tôi không chắc chắn nếu nút gửi đã thực sự được kích hoạt. Có vấn đề gì giá trị được truyền vào Login?
Tim

5

Cuối cùng tôi đã tìm thấy một cách để tự động đăng nhập bằng cách sử dụng elinks. Nó hoạt động và thậm chí là dễ dàng để cấu hình!

Hai tùy chọn cần được đặt. Điều này có thể được thực hiện bằng cách thêm các dòng sau vào ~/.elinks/elinks.conf(nếu tệp không có ở đó, tạo một dòng) hoặc bằng cách thay đổi các giá trị tại các vị trí tương ứng trong hộp thoại tùy chọn trong elinks:

    # Save username and password for later use
set document.browse.forms.show_formhist = 1
    # Do not ask for confirmation before a form is submitted
set document.browse.forms.confirm_submit = 0

Các bước cho một autologin có thể viết kịch bản là:

  • Đặt hai tùy chọn đó
  • Mở trang đăng nhập elinks, điền vào mẫu và gửi chúng.
  • Chọn để nhớ tên và mật khẩu để sử dụng sau.
  • Đóng elinks
  • Chạy elinks -auto-submit http://somesite.com

Lệnh sau sẽ thực hiện đăng nhập tự động mà không cần tương tác người dùng thêm.

Tôi thực sự sử dụng timeout 1m elinks -auto-submit http://somesite.com &, do đó tôi không có quá trình chạy nhanh không hoạt động trong nền mọi lúc.


3

Một cách đơn giản để viết kịch bản này là với Selenium .

Bạn có thể sử dụng plugin "Trình ghi kiểm tra" Firefox của họ để ghi lại bản kiểm tra chính mình đăng nhập vào mạng và sau đó phát lại bản kiểm tra.


0

Có, có một cách rất đơn giản để đăng nhập vào internet của trường đại học. Bạn có thể sử dụng trình duyệt web ' Lynx ', một trình duyệt dựa trên văn bản, được thiết kế để sử dụng trên thiết bị đầu cuối. Vì vậy, đây là cách:

$ echo "username=myname&password=mypassword" | lynx "url of the form" -post_data

trong đó, ' tên người dùng ' là tên của trường tương ứng với tên người dùng trong biểu mẫu và ' mật khẩu ' là tên của trường tương ứng với trường mật khẩu và ' myname ' và ' mypassword ' là các giá trị tương ứng được điền vào hình thức. Bạn có thể tìm tên trường bằng cách sử dụng 'Kiểm tra phần tử' từ bất kỳ trình duyệt nào. Tôi đã thử uốn cong theo hướng dẫn trong câu trả lời của Blue tweet - Vignesh4303 nhưng không hiệu quả.


0

Bạn có thể nhận được một tiện ích bổ sung cho trình duyệt của mình, nó sẽ tự động đăng nhập vào các trang web có mật khẩu đã lưu. Tôi đã sử dụng AutoAuth với firefox. Sau đó, bạn đăng nhập một lần và lưu thông tin đăng nhập của bạn, sau đó viết một tập lệnh vừa có

#!/bin/bash
firefox https://website address goes here

Khi thực hiện, nó sẽ đi và tự động đăng nhập. Tôi đã thử với nhiều trang web và nó hoạt động tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.