公司最近搞了个上网认证系统.每天开机要连上网络都要登录一下.

一直听说python啥事都能干,说得我这个美工心痒痒.

装好python,搜了一些教程,说简单的post发送就能搞定,

再往下,了解到了post需要requests这个东西.

还是搜索,知道怎么装了,跳过写hello world这一步,直接把网上搜索的代码往IDE里一贴然后运行

>>>当当当当...当然是各种红色英文字了

对于一个只接触过css的美工来说,代码太难了

但是我不是一般的美工,我是一个机灵的美工.

经过不倦的copy,试运行,我还是没能写出一个简简单单就能搞定的python代码.

我还是老老实实的每天登录一遍那个认证,有记住密码功能似乎没那么麻烦.

然而,一种不认命的念头始终在我登录认证的时候浮现.

于是我又操起了python IDLE窗口,打开"Requests: 让 HTTP 服务人类"

从头开始这个简单而又神圣的目标.

很多教程都告诉我们怎么在浏览器的调试模式下找到"那个url",对,就是那个url

对requests来说,这应该是第一要解决的任务.

我们公司这个认证系统的post地址是写在js文件中,仔细找基本上能在代码行中搜索到.

但那对我太难了,

总到来说,我找到了这个url,但不是调试模式下找到的,我用了Charles这个工具,

大佬们用来抓包的,我粗略了解它的用法.打开它,然后点击认证系统上的登录按钮,

charles里就出现了一个新的地址,不消说,它应该是那个url了.

于是我开始写post方法了:

import requests

url = 'http://180.--.-.--/ac_portal/login.php'

r = requests.post(url)

我也用过get.但我觉得看长相就不应该用get

运行....! shell窗口出现了从未见过的空白景象.

我不知道发生了什么,但我觉得它没出错了.

print(r)一下.

<Response [404]>

404的含义就是url正确,但是找不到文件.请忽略这个,因为找到这个也不是我的目的.

解决登录的目的应该是发送用户名和密码给某个地址,然后它返回登录成功就可以了.

我对比了charles中用认证系统登录和用我python Post过去的结果,

它们的区别在于我这个代码没有带一个form过去.

form里面正是我填的用户名和密码

之后我尝试了网上搜索的各种方法,

什么url后面带参数,最后搞明白要用data.

import requests

url = 'http://180.--.-.--/ac_portal/login.php'

data = {'opr':'pwdLogin','userName':'你的用户名','pwd':'你的密码','rememberPwd':'0'}

#反正这里一堆参数或多或少,看原本页面上发送的form字段有哪些就行.

r = requests.post(url,data)

运行.....成功!

print(r)

返回<Response [200]>

事情解决的很突然,还有点不习惯.反正大概就这四行代码就搞定了.

有看别人写的要加什么header什么的,我也加过,不加一样可以用.

然后把文件拖到开机启动文件夹.每次自动运行.

曾经在登录页面心里浮现的想法(懒惰的想法)就这么实现了,果然程序员就是牛逼,可以用工具帮自己干活.

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐