欢迎来到网易天天爱彩票下载_网易天天爱彩票手机版_天天爱彩票下载苹果! 联系我们 网站地图

网易天天爱彩票下载_网易天天爱彩票手机版_天天爱彩票下载苹果

0379-65557469

网易天天爱彩票手机版
全国服务热线
0379-65557469

电话: 0379-65557469
0379-63930906
0379-63900388 
0379-63253525   
传真: 0379-65557469
地址:洛阳市洛龙区开元大道219号2幢1-2522、2501、2502、2503、2504、2505室 

网易天天爱彩票手机版

Python模仿登录的几种办法 !

作者:admin 发布时间:2019-05-14 19:35:39 浏览次数:300
打印 收藏 关闭
字体【
视力保护色

办法一:直接运用已知的cookie拜访

特色:

简略,但需求先在浏览器登录

原理:

简略地说,cookie保存在建议恳求的客户端中,服务器运用cookie来区别不同的客户端。由于http是一种无状况的衔接,当服务器一瞬间收到好几个恳求时,是无法判别出哪些恳求是同一个客户端建议的。而“拜访登录后才干看到的页面”这一行为,恰恰需求客户端向服务器证明:“我是方才登录过的那个客户端”。所以就需求cookie来标识客户端的身份,以存储它的信息(如登录状况)。

当然,这也意味着,只需得到了其他客户端的cookie,咱们就能够冒充成它来和服务器对话。这给咱们的程序带来了待机而动。

咱们先用浏览器登录,然后运用开发者东西检查cookie。接着在程序中带着该cookie向网站发送恳求,就能让你的程序假扮成方才登录的那个浏览器,得到只要登录后才干看到的页面。

具体步骤:

1.用浏览器登录,获取浏览器里的cookie字符串

先运用浏览器登录。再翻开开发者东西,转到network选项卡。在左面的Name一栏找到当时的网址,挑选右边的Headers选项卡,检查Request Headers,这儿包括了该网站颁发给浏览器的cookie。对,便是后边的字符串。把它仿制下来,一瞬间代码里要用到。

留意,最好是在运转你的程序前再登录。假如太早登录,或是把浏览器关了,很或许仿制的那个cookie就过期无效了。



2.写代码

urllib库的版别:

import sys
import io
from urllib import request
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改动规范输出的默许编码
#登录后才干拜访的网站
url = 'http://ssfw.xmu.edu.cn/cmstar/index.portal'
#浏览器登录后得到的cookie,也便是方才仿制的字符串
cookie_str = r'JSESSIONID=xxxxxxxxxxxxxxxxxxxxxx; iPlanetDirectoryPro=xxxxxxxxxxxxxxxxxx'
#登录后才干拜访的网页
url = 'http://ssfw.xmu.edu.cn/cmstar/index.portal'
req = request.Request(url)
#设置cookie
req.add_header('cookie', raw_cookies)
#设置恳求头
req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36')
resp = request.urlopen(req)
print(resp.read().decode('utf-8'))

requests库的版别:

import requests
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改动规范输出的默许编码
#登录后才干拜访的网页
url = 'http://ssfw.xmu.edu.cn/cmstar/index.portal'
#浏览器登录后得到的cookie,也便是方才仿制的字符串
cookie_str = r'JSESSIONID=xxxxxxxxxxxxxxxxxxxxxx; iPlanetDirectoryPro=xxxxxxxxxxxxxxxxxx'
#把cookie字符都市淫乱串处理成字典,以便接下来运用
cookies = {}
for line in cookie_str.split(';'):
key, value = line.split('=', 1)
cookies[key] = value

办法二:模仿登录后再带着得到的cookie拜访

原理:

咱们先在程序中向网站宣布登录恳求,也便是提交包括登录信息的表单(用户名、暗码等)。从呼应中得到cookie,往后在拜访其他页面时也带上这个cookie,就能得到只要登录后才干看到的页面。

具体步骤:

1.找出表单提交到的页面

仍是要运用浏览器的开发者东西。转到network选项卡,并勾选Preserve Log(重要!)。在浏览器里登录网站。然后Python模仿登录的几种办法 !在左面的Name一栏找到表单提交到的页面。怎样找呢?看看右侧,转到Headers选项卡。首要,在General那段,Request MePython模仿登录的几种办法 !thod应当是POST。其次最下方应该要有一段叫做Form Data的,里边能够看到你方才输入的用户名和暗码等。也能够看看左面的Name,假如含有login这个词,有或许便是提交表单的页面(不必定!)。

这儿要着重一点,“表单提交到的页面”一般并不是你填写用户名和暗码的页面!所以要运用东西来找到它。

2.找出要提交的数据

尽管你在浏览器里登陆时只填了用户名和暗码,但表单里包括的数据可不只这些。从Form Data里就能够看到需求提交的一切数据。

3.写代码

urllib库的版别:

import sys
import io
import urllib.request
import http.cookiejar
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改动规范输出的默许编码
#登录时需求POST的数据
data = {'Login.Token1':'学号',
'Login.Token2':'暗码',
'goto:http':'//ssfw.xmu.edu.cn/cmstar/loginSuccess.portal',
'gotoOnFail:http':'//ssfw.xmu.edu.cn/cmstar/loginFailure.portal'}
post_data = urllib.parse.urlencode(data).encode('utf-8')
#设置恳求头
headers = {'User-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'}
#登录时表单提交到的地址(用开发者东西能够看到)
login_url = ' http://ssfw.xmu.edu.cn/cmstar/userPasswordValidate.portal
#结构登录恳求
req = urllib.request.Request(login_url, headers = headers, data = post_data)
#结构cookie
cookie = http.cookiejar.CookieJar()
#由cookie结构opener
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie))
#发送登录恳求,尔后这个opener就带着了cookie,以证明自己登录过
resp = opener.open(req)
#登录后才干拜访的网页
url = 'http://ssfw.xmu.edu.cn/cmstar/index.portal'
#结构拜访恳求
req = urllib.request.Request(url, headers = headers)
resp = opener.open(req)
print(resp.read().decode('utf-8'))

requests库的版别:

import requests
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改动规范输出的默许编码
#登录后才干拜访的网页
url = 'http://ssfw.xmu.edu.cn/cmstar/index.portal'
#浏览器登录后得到的cookie,也便是方才仿制的字符串
cookie_str = r'JSESSIONID=xxxxxxxxxxxxxxxxxxxxxx; iPlanetDirectoryPro=xxxxxxxxxxxxxxxxxx'
#把cookie字符串处理成字典,以便接下来运用
cookies = {}
for line in cookie_str.split(';'):
key, value = line.split('=', 1)
cookies[key] = value
#设置恳求头
headers = {'User-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3Python模仿登录的几种办法 !112.113 Safari/537.36'}
#在发送get恳求时带上恳求头和cookies
resp = requests.get(url, headers = headers, cookies = cookies)
print(resp.content.decode('utf-8'))

显着感觉requests库用着更便利啊~~~

办法三:模仿登录后用session坚持登录状况

原理:

session是会话的意思。和cookie的相似之处在于,它也能够让服务器“认得”客户端。简略了解便是,把每一个客户端和服务器的互动当作一个“会话”。既然在同一个“会话”里,服务器天然就能知道这个客户端是否登录过。

具体步骤:

1.找出表单提交到的页面

2.找出要提交的数据

这两步和办法二的前两步是相同的

3.写代码

requests库的版别

import requests
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改动规范输出的默许编码
#登录时需求POST的数据
data = {'Login.Token1':'学号',
'Login.Token2':'暗码',
'goto:http':'//ssfw.xmu.edu.cn/cmstar/loginSuccess.portal',
'gotoOnFail:http':'//ssfw.xmu.edu.cn/cmstar/loginFailure.portal'}
#设置恳求头
headers = {'User-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'}
#登录时表单提交到的地址(用开发者东西能够看到)
login_url = 'http://ssfw.xmu.edu.cn/cmstar/userPasswordValidate.portal'
#结构Session
session = requests.Session()
#在session中发送登录恳求,尔后这个session里就存储了cookie
#能够用print(session.cookies.get_dict())检查
resp = session.post(login_url, data)
#登录后才干拜访的网页
url = 'http://ssfw.xmu.edu.cn/cmstar/index.portal'
#发送拜访恳求
resp = session.get(url)
print(resp.content.decode('utf-8'))

办法四:运用无头浏览器拜访

特色:

功能强大,简直能够抵挡任何网页,但会导致代码功率低

原理:

假如能在程序里调用一个浏览器来拜访网站,那么像登录这样的操作就垂手可得了。在Python中能够运用Selenium库来调用浏览器,写在代码里的操作(翻开网页、点击……)会变成浏览器忠实Python模仿登录的几种办法 !地履行。这个被操控的浏览器能够是Firefox,Chrome等,但最常用的仍是PhantomJS这个无头(没有界面)浏览器。也便是说,只需把填写用户名暗码、点击“登录”按钮、翻开另一个网页等操作写到程序中,PhamtomJS就能确确实实地让你登录上去,并把呼应回来给你。

具体步骤:

1.装置selenium库、PhantomJS浏览器

2.在源代码中找到登录时的输入文本框、按钮这些元素

由于要在无头浏览器中进行操作,所以就要先找到输入框,才干输入信息。找到登录按钮,才干点击它。

在浏览器中翻开填写用户名暗码的页面,将光标移动到输入用户名的文本框,右键,挑选“检查元素”,就能够在右边的网页源代码中看到文本框是哪个元素。同理,能够在源代码中找到输入暗码的文本框、登录按钮。

3.考虑如安在程序中找到上述元素

Selenium库供给了find_element(s)_by_xxx的办法来找到网页中的输入框、按钮等元素。其间xxx能够是id、name、tag_name(标签名)、class_name(class),也能够是xpath(xpath表达式)等等。当然仍是要具体分析网页源代码。

4.写代码

import requests
import sys
import io
from selenium import webdriver
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf8') #改动规范输出的默许编码
#树立Phantomjs浏览器目标,括号里是phantomjs.exe在你的电脑上的途径
browser = webdriver.PhantomJS('d:/tool/07-net/phantomjs-windows/phantomjs-2.1.1-windows/bin/phantomjs.exe')
#登录页面
url = r'http://ssfw.xmu.edu.cn/cmstar/index.portal'
# 拜访登录页面
browser.get(url)
# 等候必定时刻,让js脚本加载结束
browser.implicitly_wait(3)
#输入用户名
username = browser.find_element_by_name('user')
username.send_keys('学号')
#输入暗码
password = browser.find_element_by_name('pwd')
password.send_keys('暗码')
#挑选“学生”单选按钮
student = browser.find_element_by_xpath('//input[@value="student"]')
student.click()
#点击“登录”按钮
login_button = browser.find_element_by_name('btn')
login_button.submit()
#网页截图
browser.save_screenshot('picture1.png')
#打印网页源代码
print(browser.paPython模仿登录的几种办法 !ge_source.encode('utf-8').decode())
browser.quit()

版权所有:洛阳市建设工程咨询有限责任公司 联系人:李经理 电话: 地址:洛阳市洛龙区开元大道219号2幢1-2522、2501、2502、2503、2504、2505室
版权所有 网易天天爱彩票下载 沪ICP备185549273号-3