天天看点

python3模拟登录zabbix

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

<code>#!/usr/bin/env python</code>

<code># -*- coding: utf-8 -*-</code>

<code>import</code> <code>urllib.request</code>

<code>import</code> <code>http.cookiejar</code>

<code>import</code> <code>urllib.parse</code>

<code># 登录的主页面</code>

<code>hosturl </code><code>=</code> <code>'http://xxxxx'</code>  <code># 自己填写</code>

<code># post数据接收和处理的页面(我们要向这个页面发送我们构造的Post数据)</code>

<code>posturl </code><code>=</code> <code>'http://xxxxxxxxxxxxxxx/index.php'</code>  <code># 从数据包中分析出,处理post请求的url</code>

<code># 设置一个cookie处理器,它负责从服务器下载cookie到本地,并且在发送请求时带上本地的cookie</code>

<code>cj </code><code>=</code> <code>http.cookiejar.LWPCookieJar()</code>

<code>cookie_support </code><code>=</code> <code>urllib.request.HTTPCookieProcessor(cj)</code>

<code>opener </code><code>=</code> <code>urllib.request.build_opener(cookie_support, urllib.request.HTTPHandler)</code>

<code>urllib.request.install_opener(opener)</code>

<code># 打开登录主页面(他的目的是从页面下载cookie,这样我们在再送post数据时就有cookie了,否则发送不成功)</code>

<code>h </code><code>=</code> <code>urllib.request.urlopen(hosturl)</code>

<code># 构造header,一般header至少要包含一下两项。这两项是从抓到的包里分析得出的。</code>

<code>headers </code><code>=</code> <code>{</code><code>'User-Agent'</code><code>: </code><code>'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0'</code><code>,</code>

<code>          </code><code>'Referer'</code><code>: </code><code>'http://xxxxxxxxxxxx/index.php'</code><code>}</code>

<code>            </code> 

<code># 构造Post数据,他也是从抓大的包里分析得出的。</code>

<code>postData </code><code>=</code> <code>{</code><code>"name"</code><code>: </code><code>'Admin'</code><code>,</code>

<code>             </code><code>"password"</code><code>: </code><code>'xxxxxxx'</code><code>,</code>

<code>             </code><code>"autologin"</code><code>: </code><code>1</code><code>,</code>

<code>             </code><code>"enter"</code><code>: </code><code>"Sign in"</code><code>}</code>

<code>             </code> 

<code># 需要给Post数据编码</code>

<code>postData </code><code>=</code> <code>urllib.parse.urlencode(postData).encode(</code><code>'utf-8'</code><code>)</code>

<code># 通过urllib2提供的request方法来向指定Url发送我们构造的数据,并完成登录过程</code>

<code>request </code><code>=</code> <code>urllib.request.Request(posturl, postData, headers)</code>

<code>response </code><code>=</code> <code>urllib.request.urlopen(request)</code>

<code>text </code><code>=</code> <code>response.read().decode()</code>

<code>print</code><code>(text)</code>

本文转自 295631788 51CTO博客,原文链接:http://blog.51cto.com/hequan/1907543,如需转载请自行联系原作者