[ARCGIS]使用PYTHON爬蟲控制(啓動、停止、暫停、重啓和刪除)ArcgisServer地圖服務

目錄:

  1. 思路
  2. 實現步驟
  3. 注意事項

思路:

1.ARCGIS SERVER MANAGER可以在瀏覽器中打開並執行各種操作;地址:http://HOST:PORT/arcgis/manager/default.aspx;如圖所示。

2.可以在左側目錄樹中點擊Services➡Manager Service,在這個頁面可以看到MapServer列表,勾選想要操作的服務,可以執行啓動,停止,暫停,重啓和刪除操作。如圖所示。

3.網頁可以操作,那麼就可以使用PYTHON爬蟲進行操作;

4.爬蟲抓包過程從後往前推;

實施步驟

1.模擬啓動步驟,抓包信息如下

請求頭和響應頭:

COOKIE:

請求參數:

可以看到,請求頭和響應頭除了COOKIE之外沒有其他變量,COOKIE有兩個參數,一個是ASP.NET_SessionId(應該是IIS返回的COOKIE值)一個是ManagerWebCookie(ARCGIS本身返回的COOKIE值);參數中除了查詢字符串r、CurrentFolder和__EVENTARGUMENT是變量之外,其餘經過驗證都是常量(可以更換瀏覽器或清除緩存後反覆嘗試對比,也可以直接使用另一個電腦抓包對比)。操作變量是__EVENTARGUMENT: EventArg=buttonClicked&foldername=&sortexpression=Name,ASC&pagenumber=0

所以現在最主要的問題是兩個COOKIE是從何而來?

首先按常理猜測兩個COOKIE是登錄之後服務器返回給瀏覽器的。下面來驗證一下。

2.模擬登錄操作

抓包的請求頭和響應頭如圖所示。

可以清晰的看到響應頭出現了一個COOKIE值ManagerWebCookie,另一個COOKIE值ASP.NET_SessionId竟然出現在請求頭裏,excuse me?這基本上證明在我們按下登錄操作之前,瀏覽器已經存在ASP.NET_SessionId,下面驗證一下想法。

3.登陸界面抓包

抓包前可以先清理瀏覽器中相關緩存。防止之前的緩存數據造成錯覺。如圖所示。

果然是在訪問登錄界面是響應頭中藏着ASP.NET_SessionId值。

4.代碼(完全按照瀏覽器的請求頭設置參數)

import requests
import time
url_cookie='http://10.73.9.21/ArcGIS/Manager/login.aspx?ReturnUrl=%2farcgis%2fmanager%2fdefault.aspx'

url_action='http://10.73.9.21/ArcGIS/Manager/Modules/Services/OrganizeServices.aspx?'

def get_NET_SessionId(url):
    headers = {
        'Host': '10.73.9.21',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
        'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
        'Accept-Encoding': 'gzip, deflate',
        # 'Content-Type': 'application/x-www-form-urlencoded',
        # 'Content-Length': '436',
        'Connection': 'keep-alive',
        'Referer': 'http://10.73.9.21/ArcGIS/Manager/login.aspx?ReturnUrl=%2farcgis%2fmanager%2fdefault.aspx',
        # 'Cookie': 'ASP.NET_SessionId={0}'.format(NET_SessionId),
        'Upgrade-Insecure-Requests': '1',
        # 'Pragma': 'no-cache',
        # 'Cache-Control': 'no-cache',

    }
    r=requests.get(url=url, headers=headers)
    NET_SessionId=r.cookies["ASP.NET_SessionId"]
    return NET_SessionId

def get_ManagerWebCookie(url,NET_SessionId):
    headers = {
        'Host': '10.73.9.21',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
        'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
        'Accept-Encoding': 'gzip, deflate',
        'Content-Type': 'application/x-www-form-urlencoded',
        'Content-Length': '436',
        'Connection': 'keep-alive',
        'Referer': 'http://10.73.9.21/ArcGIS/Manager/login.aspx?ReturnUrl=%2farcgis%2fmanager%2fdefault.aspx',
        'Cookie': 'ASP.NET_SessionId={0}'.format(NET_SessionId),
        'Upgrade-Insecure-Requests': '1',
        'Pragma': 'no-cache',
        'Cache-Control': 'no-cache',
        # 'Cookie':'ASP.NET_SessionId=zc1mkazj1expbzjghs2c1s55',
        # 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0',
    }
    formdata = {
        # 'ReturnUrl':'/arcgis/manager/default.aspx',
        '__LASTFOCUS': '',
        '__EVENTTARGET': '',
        '__EVENTARGUMENT': '',
        '__VIEWSTATE': '/wEPDwULLTEyODg3NzUzMDEPZBYCAgMPZBYCAgMPZBYCZg9kFgICAQ9kFgJmD2QWBAITDw8WBB4EVGV4dAUPV0lOLU8yQUhUNUFTT1VTHgdFbmFibGVkaGRkAhUPDxYCHwFoZGRkOfgeE0vlD/41cojdrMaPTlX9V/U=',
        '__EVENTVALIDATION': '/wEWBQLsiLKEBAKUvNa1DwL666vYDAKUko3IDQKnz4ybCLQY3cXN4CDwwoNihCDSoZ+2RxH0',
        'Login1$UserName': 'WIN-O2AHT5ASOUS\\administrator',
        'Login1$Password': 'Cisdi@3327814',
        'Login1$LoginButton': 'Log+In'

    }
    r = requests.post(url=url, headers=headers, data=formdata, allow_redirects=False)
    ManagerWebCookie=r.cookies["ManagerWebCookie"]
    return ManagerWebCookie


def action(NET_SessionId,ManagerWebCookie,actionType,MapServerName):
    headers = {
        'Host': '10.73.9.21',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0',
        'Accept': '*/*',
        'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
        'Accept-Encoding': 'gzip,deflate',
        'X-MicrosoftAjax': 'Delta=true',
        'Cache-Control': 'no-cache',
        'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8',
        'Content-Length': '7853',
        'Connection': 'keep-alive',
        'Referer': '10.73.9.21/ArcGIS/Manager/Modules/Services/OrganizeServices.aspx?',
        'Cookie': 'ASP.NET_SessionId={0};ManagerWebCookie={1}'.format(NET_SessionId,ManagerWebCookie)
    }
    formdata={
        'ScriptManager1':'ScriptManager1|btnExecuteCommandOnServices',
        'CurrentFolder':'WIN-O2AHT5ASOUS(root)',
        'txtNewFolder':'',
        'ddlProtocols':'Soap',
        'permissionsDialog$domain':'rbLocal',
        'listBox1Values':'',
        'listBox2Values':'',
        '__VIEWSTATE':'/wEPDwUKLTMzNDA2MjU3Ng9kFgICAw9kFh4CAw8PZBYCHgdvbmNsaWNrBewCdmFyIGFyZ3VtZW50PSdFdmVudEFyZz1idXR0b25DbGlja2VkJicgKyAnZm9sZGVybmFtZT0nK1NlcnZpY2VzTWFuYWdlci5DdXJyZW50Rm9sZGVyTmFtZSsnJnNvcnRleHByZXNzaW9uPScrU2VydmljZXNNYW5hZ2VyLlNvcnRFeHByZXNzaW9uKycmcGFnZW51bWJlcj0nK1NlcnZpY2VzTWFuYWdlci5DdXJyZW50UGFnZU51bWJlcjsgdmFyIGNvbnRleHQ9bnVsbDsgX19lc3JpRG9Qb3N0QmFjaygnYnRuU2hvd1NlcnZpY2VzSW5Gb2xkZXInLCdidG5TaG93U2VydmljZXNJbkZvbGRlcicsIGFyZ3VtZW50LCBFU1JJLkFyY0dJUy5NYW5hZ2VyLkZyYW1ld29yay5Db250cm9scy5Qcm9jZXNzTVNBamF4Q2FsbGJhY2tSZXN1bHQsIGNvbnRleHQpO2QCBQ8PZBYCHwAF9gJ2YXIgYXJndW1lbnQ9J0V2ZW50QXJnPWJ1dHRvbkNsaWNrZWQmJyArICdmb2xkZXJuYW1lPScrU2VydmljZXNNYW5hZ2VyLkN1cnJlbnRGb2xkZXJOYW1lKycmcGFnZW51bWJlcj0nK1NlcnZpY2VzTWFuYWdlci5DdXJyZW50UGFnZU51bWJlcisnJnNvcnRleHByZXNzaW9uPScrU2VydmljZXNNYW5hZ2VyLlNvcnRFeHByZXNzaW9uOyB2YXIgY29udGV4dD1udWxsOyBfX2VzcmlEb1Bvc3RCYWNrKCdidG5DaGFuZ2VQYWdlRm9yU2VydmljZXNMaXN0JywnYnRuQ2hhbmdlUGFnZUZvclNlcnZpY2VzTGlzdCcsIGFyZ3VtZW50LCBFU1JJLkFyY0dJUy5NYW5hZ2VyLkZyYW1ld29yay5Db250cm9scy5Qcm9jZXNzTVNBamF4Q2FsbGJhY2tSZXN1bHQsIGNvbnRleHQpO2QCBw8PZBYCHwAFlwJ2YXIgYXJndW1lbnQ9J0V2ZW50QXJnPWJ1dHRvbkNsaWNrZWQmJyArICdmb2xkZXJuYW1lPScrU2VydmljZXNNYW5hZ2VyLkN1cnJlbnRGb2xkZXJOYW1lOyB2YXIgY29udGV4dD1udWxsOyBfX2VzcmlEb1Bvc3RCYWNrKCdidG5EZWxldGVDdXJyZW50U2VsZWN0ZWRGb2xkZXInLCdidG5EZWxldGVDdXJyZW50U2VsZWN0ZWRGb2xkZXInLCBhcmd1bWVudCwgRVNSSS5BcmNHSVMuTWFuYWdlci5GcmFtZXdvcmsuQ29udHJvbHMuUHJvY2Vzc01TQWpheENhbGxiYWNrUmVzdWx0LCBjb250ZXh0KTtkAgkPD2QWAh8ABaYCdmFyIGFyZ3VtZW50PSdFdmVudEFyZz1idXR0b25DbGlja2VkJicgKyAnZm9sZGVybmFtZT0nK1NlcnZpY2VzTWFuYWdlci5DdXJyZW50Rm9sZGVyTmFtZSsnJmZvbGRlcnByb3BzPScrZ19qc29uc3RyaW5nOyB2YXIgY29udGV4dD1udWxsOyBfX2VzcmlEb1Bvc3RCYWNrKCdidG5TYXZlRm9sZGVyUHJvcGVydGllcycsJ2J0blNhdmVGb2xkZXJQcm9wZXJ0aWVzJywgYXJndW1lbnQsIEVTUkkuQXJjR0lTLk1hbmFnZXIuRnJhbWV3b3JrLkNvbnRyb2xzLlByb2Nlc3NNU0FqYXhDYWxsYmFja1Jlc3VsdCwgY29udGV4dCk7ZAILDw9kFgIfAAXLA3ZhciBhcmd1bWVudD0nRXZlbnRBcmc9YnV0dG9uQ2xpY2tlZCYnICsgJ2ZvbGRlcm5hbWU9JytTZXJ2aWNlc01hbmFnZXIuQ3VycmVudEZvbGRlck5hbWUrJyZwYWdlbnVtYmVyPScrU2VydmljZXNNYW5hZ2VyLkN1cnJlbnRQYWdlTnVtYmVyKycmb3BlcmF0aW9uPScrU2VydmljZXNNYW5hZ2VyLkN1cnJlbnRPcGVyYXRpb24rJyZuYW1lcz0nK1NlcnZpY2VzTWFuYWdlci5TZWxlY3RlZE5hbWVzKycmc29ydGV4cHJlc3Npb249JytTZXJ2aWNlc01hbmFnZXIuU29ydEV4cHJlc3Npb247IHZhciBjb250ZXh0PW51bGw7IF9fZXNyaURvUG9zdEJhY2soJ2J0bkV4ZWN1dGVDb21tYW5kT25TZXJ2aWNlcycsJ2J0bkV4ZWN1dGVDb21tYW5kT25TZXJ2aWNlcycsIGFyZ3VtZW50LCBFU1JJLkFyY0dJUy5NYW5hZ2VyLkZyYW1ld29yay5Db250cm9scy5Qcm9jZXNzTVNBamF4Q2FsbGJhY2tSZXN1bHQsIGNvbnRleHQpO2QCDQ8PZBYCHwAFggJ2YXIgYXJndW1lbnQ9J0V2ZW50QXJnPWJ1dHRvbkNsaWNrZWQmJyArICduZXdmb2xkZXI9JytTZXJ2aWNlc01hbmFnZXIuTmV3Rm9sZGVyTmFtZTsgdmFyIGNvbnRleHQ9bnVsbDsgX19lc3JpRG9Qb3N0QmFjaygnYnRuTmV3Rm9sZGVyT2tDYWxsYmFjaycsJ2J0bk5ld0ZvbGRlck9rQ2FsbGJhY2snLCBhcmd1bWVudCwgRVNSSS5BcmNHSVMuTWFuYWdlci5GcmFtZXdvcmsuQ29udHJvbHMuUHJvY2Vzc01TQWpheENhbGxiYWNrUmVzdWx0LCBjb250ZXh0KTtkAg8PZBYCAgEPFgIeC18hSXRlbUNvdW50AgFkAhEPZBYGAgkPDxYCHgRUZXh0BQZEZWxldGUWAh8ABW9TZXJ2aWNlc01hbmFnZXIuRGVsZXRlQ3VycmVudFNlbGVjdGVkRm9sZGVyKHRoaXMsICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgZm9sZGVyPycpO3JldHVybiBmYWxzZTtkAg8PDxYCHghJbWFnZVVybAU0fi9Nb2R1bGVzL1NlY3VyaXR5L2ltYWdlcy9zZXJ2aWNlLXVubG9ja2VkXzE2eDE2LmdpZmRkAhEPDxYCHwIFC1Blcm1pc3Npb25zFgIfAAU4U2VydmljZXNNYW5hZ2VyLlNob3dGb2xkZXJQZXJtaXNzaW9ucygnMCcpO3JldHVybiBmYWxzZTtkAhcPFgIeCk9uT2tTY3JpcHQF7wFTZXJ2aWNlc01hbmFnZXIuQWRkTmV3Rm9sZGVyKCd0eHROZXdGb2xkZXInLCdsYmxFcnJGb2xkZXJOYW1lJywnYnRuTmV3Rm9sZGVyT2tDYWxsYmFjaycsJ0ZvbGRlciBhbHJlYWR5IGV4aXN0cy4nLCdOYW1lIGNhbm5vdCBjb250YWluIHNwYWNlcyBvciBhbnkgb2YgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzOiBcXC86Kj9cXFx1MDAyN1xcXCJcdTAwM2NcdTAwM2V8JywnQSBGb2xkZXIgTmFtZSBpcyByZXF1aXJlZCcpO2QCGQ9kFgICBw8QZBAVAwRTT0FQBkJpbmFyeQ5TT0FQIG9yIEJpbmFyeRUDBFNvYXADQmluCVNvYXBPckJpbhQrAwNnZ2dkZAIdD2QWCAIEDw9kFgIfAAXdA3ZhciBhcmd1bWVudD0nRXZlbnRBcmc9YnV0dG9uQ2xpY2tlZCYnICsgJ3NpdGVuYW1lPScgKyBnX3NpdGVOYW1lICsgJyZzaXRlaWQ9JyArIGdfc2l0ZUlEICsgJyZpc3NlcnZpY2U9JyArIGdfaXNTZXJ2aWNlICsgJyZsaXN0Ym94Mj0nK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsaXN0Qm94MlZhbHVlcycpLnZhbHVlKycmdXBkYXRlZGVzY2VuZGFudHM9JytnX3VwZGF0ZURlc2NlbmRhbnRzKycmZW5hYmxlYXBwc2VjdXJpdHk9JytnX2VuYWJsZUFwcGxpY2F0aW9uU2VjdXJpdHk7IHZhciBjb250ZXh0PW51bGw7IF9fZXNyaURvUG9zdEJhY2soJ3Blcm1pc3Npb25zRGlhbG9nJGJ0blNhdmVQZXJtaXNzaW9ucycsJ3Blcm1pc3Npb25zRGlhbG9nX2J0blNhdmVQZXJtaXNzaW9ucycsIGFyZ3VtZW50LCBFU1JJLkFyY0dJUy5NYW5hZ2VyLkZyYW1ld29yay5Db250cm9scy5Qcm9jZXNzTVNBamF4Q2FsbGJhY2tSZXN1bHQsIGNvbnRleHQpO2QCBg8PZBYCHwAF2AJ2YXIgYXJndW1lbnQ9J0V2ZW50QXJnPWJ1dHRvbkNsaWNrZWQmJyArICdzaXRlbmFtZT0nICsgZ19zaXRlTmFtZSArICcmc2l0ZWlkPScgKyBnX3NpdGVJRCArICcmaXNzZXJ2aWNlPScgKyBnX2lzU2VydmljZSArICcmZG9tYWluPScgKyBnX3ZpZXdkb21haW47IHZhciBjb250ZXh0PW51bGw7IF9fZXNyaURvUG9zdEJhY2soJ3Blcm1pc3Npb25zRGlhbG9nJGxvYWRQZXJtaXNzaW9ucycsJ3Blcm1pc3Npb25zRGlhbG9nX2xvYWRQZXJtaXNzaW9ucycsIGFyZ3VtZW50LCBFU1JJLkFyY0dJUy5NYW5hZ2VyLkZyYW1ld29yay5Db250cm9scy5Qcm9jZXNzTVNBamF4Q2FsbGJhY2tSZXN1bHQsIGNvbnRleHQpO2QCCA8PZBYCHwAFlAN2YXIgYXJndW1lbnQ9J0V2ZW50QXJnPWJ1dHRvbkNsaWNrZWQmJyArICdzaXRlbmFtZT0nICsgZ19zaXRlTmFtZSArICcmc2l0ZWlkPScgKyBnX3NpdGVJRCArICcmaXNzZXJ2aWNlPScgKyBnX2lzU2VydmljZSArICcmZG9tYWluPScgKyBnX3ZpZXdkb21haW4gKycmbGlzdGJveDI9JyArIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsaXN0Qm94MlZhbHVlcycpLnZhbHVlOyB2YXIgY29udGV4dD1udWxsOyBfX2VzcmlEb1Bvc3RCYWNrKCdwZXJtaXNzaW9uc0RpYWxvZyRidG5VcGRhdGVWaWV3JywncGVybWlzc2lvbnNEaWFsb2dfYnRuVXBkYXRlVmlldycsIGFyZ3VtZW50LCBFU1JJLkFyY0dJUy5NYW5hZ2VyLkZyYW1ld29yay5Db250cm9scy5Qcm9jZXNzTVNBamF4Q2FsbGJhY2tSZXN1bHQsIGNvbnRleHQpO2QCCg9kFgICAQ9kFgYCAQ9kFgJmD2QWAgIBD2QWAgIBDxAPZBYCHgdvbkNsaWNrBSdqYXZhc2NyaXB0OmVuYWJsZUFwcGxpY2F0aW9uU2VjdXJpdHkoKTtkZGQCAg8WAh4HVmlzaWJsZWcWAmYPZBYEAgMPEA9kFgIfBQUdamF2YXNjcmlwdDpzd2l0Y2h2aWV3KGZhbHNlKTtkZGQCBQ8QD2QWAh8FBRxqYXZhc2NyaXB0OnN3aXRjaHZpZXcodHJ1ZSk7ZGRkAgMPZBYCZg9kFgQCBw8WAh8ABVNjb3B5U2VsZWN0ZWQocGVybWlzc2lvbnNEaWFsb2dfbHN0QXZhaWxhYmxlUm9sZXMscGVybWlzc2lvbnNEaWFsb2dfbHN0QWxsb3dlZFJvbGVzKWQCCQ8WAh8ABVNjb3B5U2VsZWN0ZWQocGVybWlzc2lvbnNEaWFsb2dfbHN0QWxsb3dlZFJvbGVzLHBlcm1pc3Npb25zRGlhbG9nX2xzdEF2YWlsYWJsZVJvbGVzKWQCKw8PFgIfAgUWV0lOLU8yQUhUNUFTT1VTIChyb290KWRkAi0PD2QWAh8ABStyZXR1cm4gdG9nZ2xlRHJvcGRvd24odGhpcywgJ3BubERyb3Bkb3duJyk7ZAJDDw8WAh8CBQZEZWxldGUWAh8ABX1pZihjb25maXJtKCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoZSBzZWxlY3RlZCBzZXJ2aWNlKHMpPycpKVNlcnZpY2VzTWFuYWdlci5EZWxldGVTZWxlY3RlZFNlcnZpY2VzKCk7cmV0dXJuIGZhbHNlO2QCRw8PFgQeCUJhY2tDb2xvcgqkAR4EXyFTQgIIFgIeBXN0eWxlBQ1kaXNwbGF5Om5vbmU7FgJmDw8WBB4LQ2VsbFBhZGRpbmcCCh8IAoCACBYCHwkFDHdpZHRoOjMwMHB4OxYGZg8PFgQeCENzc0NsYXNzBRRtb2RhbERpYWxvZ0hlYWRlclJvdx8IAgIWAh8JBQxwYWRkaW5nOjVweDsWAmYPZBYCZg8PFgYeCUZvbnRfQm9sZGcfAgUNRXJyb3IgTWVzc2FnZR8IAoAQZGQCAQ9kFgJmD2QWAmYPZBYCZg9kFgJmD2QWAmYPDxYIHwxnHglGb3JlQ29sb3IKjQEfAgUNRXJyb3IgTWVzc2FnZR8IAoQQZGQCAg9kFgJmDw8WBB4PSG9yaXpvbnRhbEFsaWduCyopU3lzdGVtLldlYi5VSS5XZWJDb250cm9scy5Ib3Jpem9udGFsQWxpZ24DHwgCgIAEZGQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgYFLnBlcm1pc3Npb25zRGlhbG9nJGNoa0VuYWJsZUFwcGxpY2F0aW9uU2VjdXJpdHkFGXBlcm1pc3Npb25zRGlhbG9nJHJiTG9jYWwFGnBlcm1pc3Npb25zRGlhbG9nJHJiRG9tYWluBRpwZXJtaXNzaW9uc0RpYWxvZyRyYkRvbWFpbgUjcGVybWlzc2lvbnNEaWFsb2ckbHN0QXZhaWxhYmxlUm9sZXMFIXBlcm1pc3Npb25zRGlhbG9nJGxzdEFsbG93ZWRSb2xlc7+jpQ2OaKvr7vERtCjNG8fSxMaS'.replace('+','+'),
        '__EVENTTARGET':'btnExecuteCommandOnServices',
        '__EVENTARGUMENT':'EventArg=buttonClicked&foldername=&pagenumber=0&operation={0}&names={1}&sortexpression=Name,ASC'.format(actionType,MapServerName),
        '__EVENTVALIDATION':'/wEWGAKuqYyIAgLO28LWDQL9kpmPAQKQ9M/rBQKG3fiUAwL8he6XCQKix7X+BALQi6bcDgL8nKX8CwKS3uy/DgLw3sSlAgKvsprSCQLpuqD2CQKl7tHhBwLvn9vbBQLXxMPxBQLW0M3kAgK844vWCgL2qeeABAK847fIBgLQ5vP6CALZz+ThAQKU/+ZVAsXrrLgLjtGFRcoP0hVFRhFPNj+zMSnC+9A='.replace('+','+'),
        '__ASYNCPOST':'true',
        '':''
    }
    r=requests.post(url=url_action,headers=headers,data=formdata,allow_redirects=False)
    print(r.status_code)
    return r.text

NET_SessionId=get_NET_SessionId(url=url_cookie)
print(NET_SessionId)
ManagerWebCookie=get_ManagerWebCookie(url=url_cookie,NET_SessionId=NET_SessionId)
print(ManagerWebCookie)
time.sleep(5)
re=action(NET_SessionId=NET_SessionId,ManagerWebCookie=ManagerWebCookie,actionType='start',MapServerName=',高家鎮_MapServer,三合街道_MapServer')
print(re)



3.注意事項

一個是在獲取ManagerWebCookie時,使用POST請求頁面會自動重定向,導致拿到的還是NET_SessionId,因此在請求參數中需要設置不能重定向,即allow_redirects=False;

另一個是__VIEWSTATE參數是對Base64進行編碼,參數值中包含‘+’號,由於網頁傳遞參數時,會將加號替換成空格,導致報錯“Base-64 字符數組的無效長度”。只需要使用str.replace('+','+')將字符串重新替換一下即可。


 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章