分页: 1 / 1

求修改CMCC自动登录脚本。。

发表于 : 2012-07-24 9:26
Points
求修改为Ubuntu使用

代码: 全选

#!/bin/sh

##移动CMCC WLAN认证的脚本. 
##与随e行客户端不兼容?? 通过sniffer(eg: HTTP Analyzer/HttpWatch/Wireshark/etc.)抓包得来认证交互流程, 改写成wget/curl命令即可.
##其他不兼容省份, 其他运营商的Portal认证, 只要没有CAPTHA, 也应可依法炮制.

##Tested on WGT634U with OpenWrt Backfire 10.03.1 rc6

##firewall script for initial login
#echo "/root/relogin2.sh >/tmp/relogin2.log" >> /etc/firewall.user

##cronjob for keepalive and auto relogin (range(-) not supported on OpenWrt??)
##/etc/init.d/cron reload
## m h  dom mon dow   command
#*/3 * * * * killall wget;wget http://hi.baidu.com/myeyre/blog/item/bb5470cfa42c2637f9dc613b.html -O /dev/null >/tmp/keepalive.log 2>&1 &
#0 */6 * * * /root/relogin2.sh >/tmp/relogin2.log 2>&1 &

export PATH=.:$PATH
cd /root

date "+%Y-%m-%d %H:%M:%S"

#Fake UA should be better ;)
user_agent="Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)"

##uci set network.wwan.username=1886000000
##uci set network.wwan.password=888888
##uci commit
bpssUSERNAME=$(uci get network.wwan.username)
bpssBUSPWD=$(uci get network.wwan.password)
#echo $bpssUSERNAME $bpssBUSPWD

#山东移动的CMCC Portal与其他省份的不同, 首次登陆地址中除了USERIP和ACNAME, 还有额外的参数(非必须??), 已登陆重新登陆会报错(??), 因此不能方便的通过重复登陆获取下线需要的参数.
#此处若不存在登陆结果页面, 则跳过登出步骤; 即使存在, 也可能是过时的(但似乎可以正常下线??), 所以此脚本不能和其他登陆方式混用(比如浏览器登陆后此脚本就不起作用). 
#由于DD-WRT(preSP2 r14929 mini), OpenWrt(Backfire 10.03.1 rc6)内置的精简版wget不支持跳转, https等特性, 可能需要安装全尺寸的wget(-ssl, 或curl)
#opkg update
#opkg install wget #curl
if [ -e login_res.html ]
then
base_url=$(cat login_res.html|grep "base href"|awk -F'"' '{print $2}')

logout_url1=$(cat login_res.html|grep "LogoutServlet"|awk -F'"' '{print $2}')
logout_url2=$(cat login_res.html|grep "ATTRIBUTE_UUID"|awk -F'"' '{print $2}')
logout_url3=$(cat login_res.html|grep "ATTRIBUTE_IPADDRESS"|awk -F'"' '{print $2}')

#echo "${base_url}${logout_url1}${logout_url2}${logout_url3}1"

#logout_res
wget "${base_url}${logout_url1}${logout_url2}${logout_url3}1" -O logout_res.html -U "${user_agent}" --no-check-certificate

cat logout_res.html
fi

#下班后不再登陆
if [ `date "+%H"` -gt 18 -o -e nologin ]
then 
 echo "Off duty. No login until 8:00 next weekday."
 exit
fi

#login_pre
wget "http://www.google.com/" -O login_pre.html -U "${user_agent}"

action_url=$(cat login_pre.html|grep "form action"|awk -F'"' '{print $2}'|head -1)

wlanuserip_1=$(cat login_pre.html|grep "wlanuserip_1"|awk -F'"' '{print $8}'|head -1)
wlanacname_1=$(cat login_pre.html|grep "wlanacname_1"|awk -F'"' '{print $8}'|head -1)
wlanparameter_1=$(cat login_pre.html|grep "wlanparameter_1"|awk -F'"' '{print $8}'|head -1)

#echo ${action_url}
#echo ${wlanuserip_1} ${wlanacname_1} ${wlanparameter_1}

##login_res, post
#wget "${action_url}" -O login_res.html -U "${user_agent}" --no-check-certificate \
#--post-data="bpssUSERNAME=${bpssUSERNAME}&bpssBUSPWD=${bpssBUSPWD}&wlanuserip_1=${wlanuserip_1}&wlanacname_1=${wlanacname_1}&wlanparameter_1=${wlanparameter_1}&wlanuserfirsturl_1=http://www.google.com/&ssid_1=&userAgent_1=${user_agent}&usertype_1=pc&gotopage_1=/cmccpc.jsp&css_1=/css/cmccpc_include.css&sucesspage_1=/cmccpc_index.jsp&cookieage=1&loginmode=static&wlanacssid=&issaveinfo=" 
##get is fine
wget "${action_url}?bpssUSERNAME=${bpssUSERNAME}&bpssBUSPWD=${bpssBUSPWD}&wlanuserip_1=${wlanuserip_1}&wlanacname_1=${wlanacname_1}&wlanparameter_1=${wlanparameter_1}&wlanuserfirsturl_1=http://www.google.com/&ssid_1=&userAgent_1=${user_agent}&usertype_1=pc&gotopage_1=/cmccpc.jsp&css_1=/css/cmccpc_include.css&sucesspage_1=/cmccpc_index.jsp&cookieage=1&loginmode=static&wlanacssid=&issaveinfo=" -O login_res.html -U "${user_agent}" --no-check-certificate

grep "loginsuccess" login_res.html

date "+%Y-%m-%d %H:%M:%S"

Re: 求修改CMCC自动登录脚本。。

发表于 : 2012-07-24 10:37
枫叶饭团
怎么不兼容了。。。