sidsinha has asked for the wisdom of the Perl Monks concerning the following question:
I wrote a python code to fetch web pages by logging in, authenticating (using hashing) and then collecting some stats. I want to port this code to perl. Could anyone help me in quickly porting this code to perl or help me in getting equivalent functions for urllib2 and re. Below is the python code:
#!/usr/bin/python # -*- coding: utf-8 -*- import urllib, urllib2, re from struct import * import hashlib import os import sys import xmlrpclib #from win32com.shell import shellcon, shell from xml.dom import minidom def main(): tcp_connection_status("192.168.1.1") return 0 def tcp_connection_status(nodeip): username = 'uname' password = 'pass' response = '' response = urllib2.urlopen('https://' + nodeip + '/auth1.html') response_data = response.read() #print response_data id_obj = re.search('name=\"id\" value=\"[A-Za-z0-9]*\" size=',resp +onse_data).group(0) param1_obj = re.search('NAME=\"param1\" VALUE=\"[A-Za-z0-9]*\"',re +sponse_data).group(0) param2_obj = re.search('NAME=\"param2\" VALUE=\"[A-Za-z0-9]*\"',re +sponse_data).group(0) sessId_obj = re.search('NAME=\"sessId\" VALUE=\"[A-Za-z0-9]*\"',re +sponse_data).group(0) param1 = param1_obj.split('\"')[3] param2 = param2_obj.split('\"')[3] id = id_obj.split('\"')[3] sessId= sessId_obj.split('\"')[3] param1x = param1.decode("hex") idx = id.decode("hex") digest = hashlib.md5(idx+password+param1x).hexdigest() login_data = urllib.urlencode({'uName' : username, 'sessId' : sess +Id, 'digest' : digest, 'id' : id, 'pass' : ''}) request = urllib2.Request('https://' + nodeip + '/auth.cgi',login_ +data) request.add_header('Referer', 'http://' + nodeip + '/auth1.html') request.add_header('Cookie', 'SessId='+sessId) response = urllib2.urlopen(request).read() request = urllib2.Request('https://' + nodeip + '/outlookView.html +') request.add_header('Referer', 'http://' + nodeip + '/auth.cgi') request.add_header('Cookie', 'SessId='+sessId) response = urllib2.urlopen(request) response_data = response.read() #print response_data loginToken_obj = re.search('loginToken = \"[A-Za-z0-9]*\"',respons +e_data).group(0) loginToken = loginToken_obj.split('\"')[1] post_data = urllib.urlencode({'loginToken':loginToken, 'cgiaction' +:'none'}) request = urllib2.Request('https://' + nodeip + '/main.cgi',post_d +ata) request.add_header('Referer', 'http://' + nodeip + '/auth.cgi') request.add_header('Cookie', 'SessId='+sessId) response = urllib2.urlopen(request) response_data = response.read() post_data = urllib.urlencode({'loginToken':loginToken, 'action':'c +onnStats'}) request = urllib2.Request('https://' + nodeip + '/log',post_data) request.add_header('Cookie', 'SessId='+sessId) response = urllib2.urlopen(request) response_data = response.read() print response_data if __name__ == "__main__": sys.exit(main())
|
|---|