핫스팟 형 네트워크에 프로그래밍 방식으로 로그인하는 방법은 무엇입니까?


8

나는 종종 열려있는 네트워크에 연결하지만 웹 페이지에서 사용하기 전에 키 패스 인증이 필요합니다. 스크립트를 사용하여 인증을 자동화 할 수 있습니까?

답변:


5

정말 재미있는 문제입니다.

ændrük의 대답은 아마 효과가있을 것이라고 확신하지만 데스크탑 소프트웨어에 의존하는 것이 네트워크 가용성을 관리하게하는 것은 약간 불리합니다.

파이썬의 Mechanize 라이브러리로 놀아 보는 것이 좋습니다 . 다음을 통해 리포지토리에서 설치할 수 있습니다.

sudo apt-get install python-mechanize

그런 다음 스크립팅을 받으십시오. 제출하는 페이지의 구조를 찾아 시작해야합니다. 제출 양식과 제출을 위해 입력해야하는 필드를 찾아야합니다. 일단 당신이 그것을 알고 나면, 간단한 작은 양식 파서와 제출자를 작성하는 것만큼이나 간단합니다. 기계화는 모든 무거운 작업을 수행합니다. 다음 은 양식에 대한 문서에서 적응 한 빠른 예입니다 .

import sys
from mechanize import ParseResponse, urlopen, urljoin

# replace this with the actual login page
# you'll need to do some research
uri = "http://theloginpage.com/"

response = urlopen(uri)
forms = ParseResponse(response, backwards_compat=False)
form = forms[0]
print form
form["username"] = "your username"
form["username"] = "password"

# form.click() returns a mechanize.Request object
# (see HTMLForm.click.__doc__ if you want to use only the forms support, and
# not the rest of mechanize)
print urlopen(form.click()).read()

시스템 작동 방식에 따라 이것으로 충분할 수 있습니다. 연결을 설정하는 동안 세션을 유지하기 위해 쿠키 문제를 해결해야 할 수도 있지만 기술적으로 말하면 쿠키를 요구 해야하는 이유는 없습니다.

그런 다음 이것을 네트워킹 시스템에 연결하면 호출됩니다. 코드를로드하면 /etc/network/if-up.d작동하지만 로그인이 작동하는 핫스팟에 있는지 확인하기 위해 코드 앞에 코드를 추가하는 것이 좋습니다.


멋지다, 나는 기계화에 대해 몰랐다. 나는 그것을 시도하게되어 기쁩니다.
ændrük

2

설치된 포탈 포털의 유형에 따라 Wget을 사용하여 전송 된 POST 요청 ( 탬퍼 데이터 를 사용하여 전송해야하는 데이터 확인)을 통해 또는 Firefox에서 iMacros 스크립트를 사용하여 인증 할 수 있습니다 .

/etc/network/if-up.d네트워크 연결이 설정 될 때마다 실행되도록 스크립트를 추가 할 수 있습니다 . 스크립트를 실행 iwconfig하기 전에 현재 사용 중인 네트워크를 확인 하고 sudo -u yourusername웹 브라우저를 루트로 실행하지 않도록 명령을 시작하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.