मैं एक ब्राउज़र का उपयोग किए बिना वायरलेस प्रदाता के "ओपन" नेटवर्क को कैसे प्रमाणित करूं?


13

इस तरह का सेटअप शॉपिंग मॉल और हवाई अड्डों में आम लगता है। पश्चिमी कनाडा में शॉ ऐसी सेवा प्रदान करता है और इसे "शॉ ओपन" कहता है। मुझे पूरा यकीन है कि अन्य स्थानों में प्रदाताओं से समान सेवाएं हैं जैसे कि टी-मोबाइल, आदि।

एक सेल फोन जैसे कुछ से यह करने के लिए बहुत जटिल नहीं है। वाईफाई हॉटस्पॉट से कनेक्ट करने के लिए कोई प्रमाणीकरण आवश्यक नहीं है क्योंकि यह सार्वजनिक पहुंच के लिए "खुला" है। जब तक मैं अपने ब्राउज़र का उपयोग नहीं करता हूं और आईएसपी द्वारा प्रदान किए गए एक विशेष वेबपेज पर साइन इन करता हूं, तब तक मेरा सेल फोन वेबसाइटों या रिमोट सेवाओं से ऐप्स से नहीं जुड़ता ।

मेरा सवाल बस इतना कहा गया है: मैं एक ऐसे डिवाइस से प्रमाणीकरण चरण को स्वचालित कैसे कर सकता हूं जिसमें आमतौर पर पारंपरिक ब्राउज़र नहीं होता है?

मेरे पास, मेरे विशेष मामले में, एक रास्पबेरी पाई सॉफ्टवेयर के साथ कॉन्फ़िगर किया गया है जिसे मैं व्यापार शो आदि में उपयोग करना चाहता हूं। थिसिस स्थानों में "ओपन" हॉटस्पॉट्स के समान हैं। रासपी का अर्थ होता है आत्म निहित। यह सिर्फ अपना व्यवसाय करता है और एक वेबसाइट से बात करता है। लेकिन इस आउटबाउंड कनेक्शन को ISPs "ओपन" कनेक्शन द्वारा ब्लॉक किया गया है, क्योंकि मैं इस प्रक्रिया के ब्राउज़र भाग को पूरा नहीं कर सका हूं।

यह मानते हुए कि मेरे पास किसी विशेष प्रदाता के नेटवर्क पर ऐसा करने के लिए क्रेडेंशियल्स हैं, मैं कैसे पीआई को एक टर्मिनल सत्र खोलने की आवश्यकता के बिना प्रक्रिया के उस हिस्से को स्वचालित कर सकता हूं? यहां तक ​​कि किस तरह की तकनीक का उपयोग किया जाता है, जिसे मैं खोज सकता हूं?


मान लें कि आपके पाई में लिनक्स है, तो क्या यह wgetप्रोग्राम स्थापित है?
डेविड विल्किंस

1
आपका प्रश्न वास्तव में लिनक्स या यूनिक्स के बारे में नहीं है, यह सुपर यूजर पर बेहतर होगा । इसके अलावा, क्या कोई कारण है जो आप पीआई पर एक ब्राउज़र स्थापित नहीं करना चाहते हैं? आप हमेशा links2उदाहरण के लिए एक साधारण पाठ-आधारित, कमांड लाइन ब्राउज़र का उपयोग कर सकते हैं ।
terdon

@terdon जब तक पाई लिनक्स या कुछ अन्य यूनिक्स संस्करण चला रहा है, तब तक यह सवाल पूरी तरह से विषय पर है। इसके विपरीत, मुझे नहीं लगता कि एसयू की परिभाषा के अनुसार पाई एक कंप्यूटर है (लेकिन मुझे इस बारे में निश्चित नहीं है, मैंने उस परिभाषा को कभी नहीं समझा है और न ही इसे कहीं भी लिखा हुआ नहीं देखा है)।
गिल्स एसओ- बुराई को रोकना '

@ गिल्स हां, यह विषय पर है, मैंने बंद करने के लिए मतदान नहीं किया। मैं सिर्फ यह सुझाव दे रहा था कि यह एसयू पर एक बेहतर फिट हो सकता है। और हां, पीआई के सवालों का वहां स्वागत है।
terdon

जवाबों:


12

इस तरह की समस्याओं को हल करने की कुंजी यह जानना है कि सवाल कैसे पूछा जाए। मैंने Google को "पनरा ब्रेड वाईफाई का उपयोग कैसे करें" की तलाश में खोजा और इस रत्न को बदल दिया।

इस लेख में कई स्क्रिप्ट थीं जिनका उपयोग ऑटो लॉगिंग को सुविधाजनक बनाने के लिए किया जा सकता है। मैंने पैनेरा ब्रेड के लिए उदाहरण को शामिल करने का विकल्प चुना है जो पायथन के मैकेनाइज लाइब्रेरी का लाभ उठाता है।

किसी भी समय एक विशेष नेटवर्क इंटरफ़ेस ऊपर या नीचे स्क्रिप्ट को चलाने के लिए समाधान NetworkManager की dispatcher.dनिर्देशिका का उपयोग करता है । लेख एक स्क्रिप्ट का विवरण देता है जिसे आप इस निर्देशिका में रखेंगे /etc/NetworkManager/dispatch.d, जिसे कहा जाता है 07-autologin_openwifi। यहाँ वह स्क्रिप्ट है:

#!/bin/bash
#------------------------------
# By Fahad Alduraibi
# Last update: June 12, 2012
# Version: 1.1
#------------------------------

export LC_ALL=C
LogFile="/var/log/07-WIFI_ACCESS.log"

# The parameters that get passed to the script are:
# $1 = The interface name ( eth0, wlan0 ...etc)
# $2 = Interface status ( "up" or "down" )

# Check if wireless status is up
# I have two wifi cards in my laptop, named "wlan0 and wlan1"
# so I use regular expression "wlan[01]" to match both of them.
if [[ "$1" =~ wlan[01] && $2 == "up" ]]; then

    # Get the network name from "iwconfig" or (can also locate the network based on IP or MAC address if needed)
    ESSID=$(/sbin/iwconfig $1 | grep ESSID | cut -d'"' -f2)

    # Record the date and time for debugging purposes only
    echo "[`date`] ESSID=($ESSID)" >> $LogFile

    # If the wireless name matches then run its python script
    if [[ "$ESSID" == "BCPL-PUBLIC-WIFI" ]]; then
        /usr/bin/python /myscripts/baltimore-county_library_wifi.py 1>> $LogFile 2>&1
    elif [[ "$ESSID" == "PANERA" ]]; then
        /usr/bin/python /myscripts/panera.py 1>> $LogFile 2>&1
    elif [[ "$ESSID" == "Nordstrom_Wi-Fi" ]]; then
        /usr/bin/python /myscripts/nordstrom.py 1>> $LogFile 2>&1
    #elif .... (you can add more open wifi here)

    fi
fi

#if [[ "$1" =~ wlan[01] && $2 == "down" ]]; then
    ##If you want to do somehting when the network is down
#fi

और यहाँ पनेरा ब्रेड स्क्रिप्ट है panera.py:

#------------------------------
# By Fahad Alduraibi
# Last update: June 12, 2012
# Version: 1.1
#------------------------------
import mechanize
import sys

br = mechanize.Browser()
br.set_handle_equiv(True)
#br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20100101 Firefox/13.0')]

testURL = 'http://fadvisor.net/blog/'
response = br.open(testURL)

if response.geturl() == testURL:
  print "FAD: You are already logged in to Panera."
  sys.exit()

try:
  forms = mechanize.ParseResponse(response, backwards_compat=False)
except:
  print "FAD: Error in parsing forms, Am I already logged in to Panera?"
  sys.exit()

response.close

form = forms[0]
#print form
#print "----------------------------------- Login"
request = form.click()
response = mechanize.urlopen(request)
forms = mechanize.ParseResponse(response, backwards_compat=False)
response.close()

form = forms[0]
#print form
#print "----------------------------------- Validate"
#print
request = form.click()
response = mechanize.urlopen(request)
forms = mechanize.ParseResponse(response, backwards_compat=False)
response.close()

form = forms[0]
#print form
#print "----------------------------------- ConfirmLogin New"
#print
request = form.click()
response = mechanize.urlopen(request)
forms = mechanize.ParseResponse(response, backwards_compat=False)
response.close()

form = forms[0]
#print form
#print "----------------------------------- ConfirmLogin Validate"
#print
request = form.click()
response = mechanize.urlopen(request)
forms = mechanize.ParseResponse(response, backwards_compat=False)
response.close()

form = forms[0]
#print form
#print "----------------------------------- CompleteLogin New"
#print

request = form.click()
response = mechanize.urlopen(request)
forms = mechanize.ParseResponse(response, backwards_compat=False)
response.close()

form = forms[0]
#print form
#print "----------------------------------- HttpLoginRequest"
#print

request = form.click()
response = br.open(request)
#print response.read()

response.close()
print "--- Panera Done ---"

यदि आप ऑटो लॉग इन करने के लिए अन्य तरीकों में रुचि रखते हैं, तो मैं आपको पूरे लेख को पढ़ने के लिए प्रोत्साहित करता हूं। लेख में कई अन्य खुले वाईफाई नेटवर्क थे जिन्हें बाल्टीमोर, एमडी क्षेत्र के लिए स्क्रिप्ट किया गया था।


यह एकमात्र समाधान हो सकता है, दुर्भाग्य से इसके लिए प्रत्येक अलग प्रदाता को प्रस्तुत करने के लिए यूआरएल और फार्म फ़ील्ड निर्धारित करने के लिए रिवर्स इंजीनियरिंग की एक उचित बिट की आवश्यकता होती है, जो निश्चित रूप से अपनी चुनौतियां हैं जिनमें से कम से कम डेवलपर को सभी संभावित प्रदाताओं को जानना होगा और उनके लिए पहले हाथ का उपयोग; जरूरी नहीं कि मेरे विशेष परिदृश्य के लिए ही हो। मुझे लगता है कि मैं सबसे अच्छी उम्मीद कर सकता हूं, हालांकि। बेशक, किसी भी एक प्रदाता का समाधान जल्द से जल्द टूट सकता है क्योंकि वे अपने वेब प्रमाणीकरण रूपों को अपडेट करने का निर्णय लेते हैं।
ऑक्टोपस

1

प्रमाणीकरण कैसे कार्यान्वित किया जाता है, इसके आधार पर, आप एक्सेस प्राप्त करने के लिए HTTP अनुरोध भेजने में सक्षम हो सकते हैं। यह विशेष रूप से कार्यान्वयन के कई पहलुओं पर निर्भर करता है।

ध्यान रखें, स्वायत्त प्रणालियों को बाहर रखने के लिए इस प्रकार के प्रमाणीकरण को रखा जाता है, जबकि केवल ब्राउज़र तक पहुंच की अनुमति होती है, जो कि आप को दरकिनार करने की कोशिश कर रहे हैं।

आदर्श रूप से, आपके पास एक ऐसा फ़ोन होगा जिसे आप वाईफाई हॉटस्पॉट के रूप में सेट कर सकते हैं और अपने Pi को उस नेटवर्क से जोड़ सकते हैं ताकि आप जो चाहें कर सकें, लेकिन यह मुफ़्त नहीं है।

TL; DR: भिखारी चयनकर्ता नहीं हो सकते


1
यदि यह एक ब्राउज़र के माध्यम से किया जाता है तो इसे HTTP का उपयोग करना चाहिए , इसलिए यह निश्चित रूप से संभव है। हालाँकि, इस तरह के प्रमाणीकरण (AFAIK) के लिए कोई प्रोटोकॉल या मानक नहीं है, आपको प्रति प्रदाता कुछ लागू करना होगा। यदि आप इसे कहीं और ले जाना चाहते हैं, तो आप इसे बेकार कर देंगे। मैं फ़ोन हॉटस्पॉट के साथ जाऊँगा - यदि आप फ़ोन को खुले नेटवर्क से जोड़ते हैं तो यह मुफ़्त होगा
गोल्डीलॉक्स

1

जाहिरा तौर पर ये नेटवर्क आधारित वेब के साथ मैक आधारित अभिगम नियंत्रण के बाद के प्रमाणीकरण पर निर्भर करते हैं, इसलिए आप अपने पाई के मैक पते को खराब करते हुए बस एक अलग डिवाइस पर प्रमाणित कर सकते हैं, और फिर आपका पाई नेटवर्क पर प्राप्त करने में सक्षम होना चाहिए।

इस टिप को http://frankiejarrett.com/how-to-connect-apple-tv-to-a-hotel-wi-fi-network/ से प्राप्त करें


1

यदि आपके पास दूसरा नेटवर्क डिवाइस है तो आप NAT अग्रेषण सेट कर सकते हैं। अपने सेलफोन या लैपटॉप के साथ अपने "आंतरिक" नेटवर्क से कनेक्ट करें और आरपीआई को आगे बढ़ाएं जो बड़े पैमाने पर नेटवर्क से जुड़ता है। फिर अपने लैपटॉप या फोन पर ब्राउज़र से प्रमाणित करें। नेटवर्क आपके आरपीआई के बाहरी मैक पते को देखता है और प्रमाणित कनेक्शन के साथ संबद्ध करता है।

मैं होटल के इंटरनेट से जुड़ने के लिए नियमित रूप से पॉकेट ट्रैवल राउटर (ओल्ड एयरपोर्ट एक्सप्रेस) के साथ ऐसा करता हूं, फिर मैं अपने क्रोमकास्ट और अन्य उपकरणों को फिर से प्रमाणित किए बिना उस नेटवर्क से कनेक्ट कर सकता हूं।

और भी सरल ... यदि आपका नेटवर्क डिवाइस USB है और लैपटॉप के साथ काम करता है, तो इसे लैपटॉप से ​​कनेक्ट करें और नेटवर्क में लॉग इन करें। फिर इसे आरपीआई से पुनः कनेक्ट करें। इसे कई घंटों तक काम करना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.