导航:首页 > 编程语言 > pythonhttps登录

pythonhttps登录

发布时间:2023-09-25 02:23:18

python环境设置ssl

爬取数据需要用python请求网络数据, https的加密实现依赖openssl

利用源码直接安装

安装zlib库

安装openssl到 /usr/local/openssl 目录,安装之后,编译

安装结束后执行以下命令

进入/usr/local目录下,执行以下命令

在/etc/ld.so.conf文件的最后面,添加如下内容:/usr/local/openssl/lib
然后执行以下命令

添加OPESSL的环境变量,在etc/的profile的最后一行,添加:

查看openssl版本

使用源码按过于繁琐,如果对软件版本没有特殊要求的话可以使用yum命令安装和更新,既方便又快捷

先看下ssl有没有被引入

报错是因为python没有带--with-ssl 选项编译
修改Setup.dist文件 (把Setup这个不带后缀的也一起改了)

修改结果如下:(去掉最后4行的注释)

切到python文件夹

完成之后

没有报错, 大功告成

参考链接
ImportError: No mole named _ssl
linux上安装Openssl步骤详解

⑵ windows下怎么使用python

首先,在Windows系统上安装 Python,然后才能运行,可以按如下步骤进行。
首先,登录 https://www.python.org/downloads/ 页面,可以在该页面上看到两类下载链接,分别是 Python 3.x 和 Python 2.x 版本。因为 Python 在同时维护着 3.x 和 2.x 两个版本,这样既可让早期项目继续使用 Python 2.x,也可让新的项目使用 Python 3.x 。
在该页面下方的“Looking for a specific release?”列表中选择“Python 3.6.x”,可以看到如下图所示的下载列表。
在下载列表中,以“Windows x86-64”开头的链接才是 64 位的 Python 安装程序;以“Windows x86”开头的链接是 32 位的 Python 安装程序。
推荐学习《python教程》

根据 Windows 系统平台下载合适的安装程序(64 位的平台下载 64 位的安装程序,32 位的平台下载 32 位的安装程序),本教程以 64 位的安装程序为例,下载完成后得到 python-3.6.x-amd64.exe 安装文件。
双击 python-3.6.x-amd64.exe 文件,系统将会开启 Python 安装向导,如下图所示。
勾选“Add Python 3.6 to PATH” 复选框,可以将 Python 命令工具所在目录添加到系统 Path 环境变量中;单击“Customize installation”,可以在安装时指定自定义的安装路径。单击该选项即可开始安装。
在接下来的安装界面中只要改变 Python 的安装路径(建议安装在指定盘符的根路径下,比如安装在 D:Python 目录下),其他地方使用默认选项即可。
安装完成后,启动 Windows 的命令行程序,在命令行窗口中输入“python”命令(字母 p 是小写的),如果出现 Python 提示符(>>>),就说明安装成功了,如图下图 所示。
使用 python 命令启动的就是 Python 的交互式解释器,如果要退出交互式解释器,则可按“Ctrl+Z”快捷键或使用 exit() 命令。
需要额外说明的是,在 Windows 的“开始”菜单中,也可找到 Python 3.x(或者 Python 2.x)的菜单组,在这些菜单组中可找到 Python 提供的 IDLE 工具,如下图所示,该工具是一个简易开发环境,提供了简易的 Python 编辑工具,编辑完成后按 F5 键即可运行 Python 程序。

⑶ python请求https怎么搞

import requests

response=requests.get(httpsUrl,verify=False)

⑷ Python 爬取https的登录界面,怎么爬取成功,谢谢

之前写的一直没成功,原因是用的不是HTTPS相关的函数。这次仔细研究了一下,有几个需要注意的点,一个是POST模拟登陆的时候,header中的cookie值,不同的网站应该会有不同的要求;另一个是GET页面的时候,是需要加上POST得到的response中的set-cookie的。这样才能利用登陆的成功。

写完POST和GET页面后,顺便写了个简单的命令行实现。

importhttplib,urllib
importurllib2
importcookielib
importsys

file_text="build_change.txt"
resultTable=dict()
host='buuuuuuu.knight.com'

defLogin(username,password,csrf=''):
url='/login/'
values={
'username':username,
'password':password,
'next':'',
'csrfmiddlewaretoken':csrf,
}

headers={
'User-Agent':'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/35.0.1916.114Safari/537.36',
'Content-Type':'application/x-www-form-urlencoded',
'Connection':'keep-alive',
'Cookie':'csrftoken=%s'%csrf,
'Referer':'https://buuuuuuu.knight.com/login/',
'Origin':'https://buuuuuuu.knight.com',
'Content-Type':'application/x-www-form-urlencoded',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
}
values=urllib.urlencode(values)
conn=httplib.HTTPSConnection(host,443)
conn.request("POST",url,values,headers)
response=conn.getresponse()
print'Login:',response.status,response.reason
'''
hdata=response.getheaders()
foriinxrange(len(hdata)):
forjinxrange(len(hdata[i])):
printhdata[i][j],
print
'''
returnresponse.getheader("set-cookie")


defGetHtml(_url,cookie):
get_headers={
'Host':'xxxxx.knight.com',
'Connection':'keep-alive',
'Cache-Control':'max-age=0',
'Cookie':cookie,
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'User-Agent':'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/35.0.1916.114Safari/537.36',
'Accept-Language':'zh-CN,zh;q=0.8,en;q=0.6',
}
conn=httplib.HTTPSConnection(host)
conn.request("GET",_url,None,get_headers)
res2=conn.getresponse()
print"Get%s:"%_url,res2.status,res2.reason
'''
hdata1=res2.getheaders()
foriinxrange(len(hdata1)):
forjinxrange(len(hdata1[i])):
printhdata1[i][j],
print
'''
data=res2.read()
fp=open("build_change.txt","w")
fp.write(data)
fp.close()


defParseHtml():
fp=open(file_text,"r")
content=fp.readline()
_pos=0
whilecontent:
ifcontent.find("class="change-body"")>=0:
topic=content.split(">")
resultTable[_pos]=topic[1]
whilecontent:
content=fp.readline()
resultTable[_pos]=resultTable[_pos]+content
ifcontent.find("</div>")>=0:
_pos=_pos+1
break
content=fp.readline()
fp.close()
print"Parsehtmlsuccess."


defGenerateResultTxt():
f=open("build_change_result.txt","w")
forminresultTable.keys():
f.write("------------------------------------------------------------------------------------------- ")
f.write(resultTable[m])
f.close()
print"Generateresultsuccess:build_change_result.txt."
defHelp():
print'-h:help'
print'-u:username(must)'
print'-p:password(must)'
print'-c:csrftoken(optional)'
print'-s:sandboxbuildid(must)'
print'Forexample:'
print'[1]pythonBuildChange.py-h'
print'[2]pythonBuildChang.py-uu-pp-ss1s2'
print'[3]pythonBuildChang.py-uu-pp-cc-ss1s2'


defParseParam(com):
length=len(com)
username=""
password=""
csrf=""
sid1=""
sid2=""
iflength==2orlength==8orlength==10:
ifcom[1]=='-h':
Help()
foriinrange(1,length):
ifcom[i]=='-u'andi<(length-1):
username=com[i+1]
i+=1
elifcom[i]=='-p'andi<(length-1):
password=com[i+1]
i+=1
elifcom[i]=='-c'andi<(length-1):
csrf=com[i+1]
i+=1
elifcom[i]=='-s'andi<(length-2):
sid1=com[i+1]
sid2=com[i+2]
i+=2
ifusername==""orpassword==""orsid1==""orsid2=="":
print'[Error]Parametererror!'
print'[Error]Youcanuse"pythonBuildChange.py-h"toseehowcanusethisscript.'
else:
ifcsrf=="":
cookie=Login(username,password)
else:
cookie=Login(username,password,csrf)
_url="//changelog//between//%s//and//%s/"%(sid1,sid2)
GetHtml(_url,cookie)
ParseHtml()
GenerateResultTxt()

#C:Python27python.exeC:UsersknightDesktopuildBuildChange.py-uxux-pKKKKKKKK-s18594091858525

if__name__=="__main__":
ParseParam(sys.argv)

⑸ python3中使用urllib进行https请求

刚入门python学习网络爬虫基础,我使用的python版本是python3.6.4,学习的教程参考 Python爬虫入门教程

python3.6的版本已经没有urllib2这个库了,所以我也不需要纠空带结urllib和urllib2的区别和应用场景

参考这篇官方文档 HOWTO Fetch Internet Resources Using The urllib Package 。关于http(s)请求一般就get和post两种方式较为常用衡并,所以写了以下两个小demo,url链接随便找的,具体场景具体变化,可参考注释中的基本思路

POST请求:

GET请求:

注意,
使用ssl创建未经验证的上下文,在urlopen中需传入上下文参数
urllib.request.urlopen(full_url, context=context)
这是Python 升级到 2.7.9 之后引入的一个新特性,所以在使用urlopen打开https链接会遇到如下报错:
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)
所以,当使用urllib.urlopen打开一个 https 链接时,需要先验证一次 SSL 证书
context = ssl._create_unverified_context()
或者或者导入ssl时关闭斗拦芦证书验证
ssl._create_default_https_context =ssl._create_unverified_context

⑹ python怎么获取需要登陆的接口的数据

使用Python做爬虫是很广泛的应用场景,那就涉及到了Python是如何获取接口数据的呢?Python拥有很多很强大的类库,使用urllib即可轻松获取接口返回的数据。
...展开
工具原料Python开发工具url接口,用于请求获取数据
方法/步骤分步阅读
1
/4
首先新建一个py文件,导入所需的类库,urllib,json等。
2
/4
声明api的url地址,和构造请求头。
3
/4
使用urlopen方法发起请求并获取返回的数据。
4
/4
最后就是对返回字符串的处理了。比如字符串的截取,字符串的转换成json对象,转换成字段,再获取对应key的值。
使用Python3实现HTTP get方法。使用聚合数据的应用编程接口,你可以调用小发猫AI写作API。这是一个免费的应用程序接口,先上代码,详细说明写在后面:

1
2
3
4
5
6
7
8
9
10
11
12
import requests
import time
import re
se = requests.session()

if __name__ == '__main__':
Post_url = "http://api-ok.xiaofamao.com/api.php?json=0&v=1&key=xxxxxx" #自己想办法弄到key
Post_data = {
'wenzhang': '床前明月光,疑是地上霜。'
}
Text = se.post(Post_url, data=Post_data).text.replace("'", '"').replace('/ ', '/')
print(Text)

首先,什么是原料药?应用编程接口的全称也称为应用编程接口。它简称为应用编程接口。当我第一次接触接口调用时,我不知道写什么,因为我看了整个项目。这个项目是由龙卷风写的。看了半天龙卷风后,我发现我走错了方向。我只是直接看着界面,因为没有人告诉我项目的整个过程。我不得不强迫自己去看它。我所要做的就是找到程序的主入口,然后根据函数一步一步地调用它。
当我编写接口时,因为我必须配合后台编写和浏览器访问,每次访问只需要传入相应的参数来调用相应的接口。界面可以由他人编写,也可以由合作公司提供。当然,合作公司提供的不是免费的。现在基本上,如果我不访问它一次,它只收费几美分。当你听到这些,不要低估这几分。有时候如果你打了几百万次电话,会花很多钱。有些人认为,我们不能按月付款吗?对不起,我不知道。总之,我们一个接一个地计算,因为第一次,我认为我买的那些直接买了我们想要的所有数据,把它们保存在本地数据库中,当我使用它们时,直接从我自己的数据库中转移它们。后来,我发现我想得太多了,伪原创API。
该接口调用由python的请求库访问,它基本上是一个get或post请求。有些接口是加密的,然后我们必须用另一方提供给我们的公钥加密或解密,然后用相应的参数访问。我们想要的数据基本上是在请求后返回的结果中以json格式解析的。因此,在请求之后,我们可以用请求提供的json函数来解析它,然后提取数据以一次访问一个数据。
没错,接口调用就是这么简单,但是有了后台编写,我才发现请求库现在有多强大,只要它是http或https,我很高兴我在一周内读完了请求和bs4,我真的不打电话给爬虫工程师,如果我是爬虫的时候不学习请求,你能用scrapy写4=dead来写它吗?Urllib的单词基本上被删除了。如果你有要求,为什么要用这个?

⑺ 怎样用Python设计一个爬虫模拟登陆知乎

先来说一下,爬虫模拟登陆的基本原理吧,我也是刚开始接触对于一些深层次的东西也不是掌握的很清楚。首先比较重要的一个概念就是cookie,我们都知道HTTP是一种无状态的协议,也就是说当一个浏览器客户端向服务器提交一个request,服务器回应一个response后,他们之间的联系就中断了。这样就导致了这个客户端在向服务器发送请求时,服务器无法判别这两个客户端是不是一个了。握搭这样肯定是不行的。这时cookie的作用就体现出来了。当客户端向服务器发送一个请求后,服务器会给它分配一个标识(cookie),并保存到客户端本地,当下次该客户端再次发送请求时连带着cookie一并发送给服务器,服务器一看到cookie,啊原来是你呀,这是你的东西,拿走吧。所以一个爬虫模拟登陆就是要要做到模拟一个浏览器客户端的行为,首先将你的基本登录信息发送给指定的url,服务器验证成功后会返回一个cookie,我们就利用这个cookie进行后续的爬取工作就行了。
我这里抓包用的就是chrome的开发者工具,不过你也可以使用Fiddler、Firebug等都可以,只不过作为一名前端er对chrome有一种特殊的喜爱之情。准备好工具接下来就要打开知乎的登陆页面并查看https://www.hu.com/#signin 我们可以很容易发现这个请求 发送的就是登录信息,当然我使用手机登陆的 用邮件登陆的是最后结尾是email

所以我们只需要向这个地址post数据陆或就行了

phone_num 登录名
password 密码
captcha_type 验证码类型(这个参数着这里并没有实质作用)
rember_me 记住密码
_xsrf 一个隐藏的表单元素 知乎用来防御CSRF的(段悉拿关于CSRF请打开这里) 我发现这个值是固定所以就在这里直接写死了 若果有兴趣的同学可以写一个正则表达式 把这部分的值提取出来 这样更严谨一些。

# -*- coding:utf-8 -*-
import urllib2
import urllib
import cookielib
posturl = 'https://www.hu.com/login/phone_num'
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) '
'AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/52.0.2743.116 Safari/537.36',
'Referer':'https://www.hu.com/'
}
value = {
'password':'*****************',
'remember_me':True,
'phone_num':'*******************',
'_xsrf':'**********************'
}
data=urllib.urlencode(value)
#初始化一个CookieJar来处理Cookie
cookieJar=cookielib.CookieJar()
cookie_support = urllib2.HTTPCookieProcessor(cookieJar)
#实例化一个全局opener
opener=urllib2.build_opener(cookie_support)
request = urllib2.Request(posturl, data, headers)
result=opener.open(request)
print result.read()

当你看到服务器返回这个信息的时候就说明你登陆成功了
{"r":0,
"msg": "\u767b\u5f55\u6210\u529f"
}
#翻译过来就是 “登陆成功” 四个大字
然后你就可以用这个身份去抓取知乎上的页面了
page=opener.open("https://www.hu.com/people/yu-yi-56-70")
content = page.read().decode('utf-8')
print(content)

这段代码 就是通过实例化一个opener对象保存成功登陆后的cookie信息,然后再通过这个opener带着这个cookie去访问服务器上关于这个身份的完整页面。

⑻ python爬虫模拟登录是什么意思

有些网站需要登录后才能爬取所需要的信息,此时可以设计爬虫进行模拟登录,原理是利用浏览器cookie。

一、浏览器访问服务器的过程:
(1)浏览器(客户端)向Web服务器发出一个HTTP请求(Http request);
(2)Web服务器收到请求,发回响应信息(Http Response);
(3)浏览器解析内容呈现给用户。

二、利用Fiddler查看浏览器行为信息:

Http请求消息:

(1)起始行:包括请求方法、请求的资源、HTTP协议的版本号

这里GET请求没有消息主体,因此消息头后的空白行中没有其他数据。

(2)消息头:包含各种属性

(3)消息头结束后的空白行

(4)可选的消息体:包含数据

Http响应消息:

(1)起始行:包括HTTP协议版本,http状态码和状态

(2)消息头:包含各种属性

(3)消息体:包含数据


可以发现,信息里不仅有帐号(email)和密码(password),其实还有_xsrf(具体作用往后看)和remember_me(登录界面的“记住我”)两个值。

那么,在python爬虫中将这些信息同样发送,就可以模拟登录。

在发送的信息里出现了一个项:_xsrf,值为

这个项其实是在访问知乎登录网页https://www.hu.com/#signin时,网页发送过来的信息,在浏览器源码中可见:

所以需要先从登录网址https://www.hu.com/#signin获取这个_xsrf的值,

并连同帐号、密码等信息再POST到真正接收请求的http://www.hu.com/login/email网址。

(2)获取_xsrf的值:
爬取登录网址https://www.hu.com/#signin,从内容中获取_xsrf的值。
正则表达式。

(3)发送请求:
xsrf = 获取的_xsrf的值
data = {"email":"xxx","password":"xxx","_xsrf":xsrf}
login = s.post(loginURL, data = data, headers = headers)
loginURL:是真正POST到的网址,不一定等同于登录页面的网址;

(4)爬取登录后的网页:
response = s.get(getURL, cookies = login.cookies, headers = headers)
getURL:要爬取的登陆后的网页;
login.cookies:登陆时获取的cookie信息,存储在login中。

(5)输出内容:
print response.content

五、具体代码:

[python]view plain

阅读全文

与pythonhttps登录相关的资料

热点内容
我的世界服务器地址怎么变成ip地址 浏览:31
不用时怎么加密电脑 浏览:54
不玩手机APP怎么开启警报 浏览:560
打开微信收付款加密 浏览:400
小度app怎么关闭看护助手 浏览:739
服务器方舟boss属性怎么调 浏览:345
acos系统终端命令 浏览:915
宁德云服务器最新行情 浏览:475
压缩性骨折五十天 浏览:656
如何在服务器里把方块替换 浏览:909
变频空调摘板用什么替代压缩机 浏览:46
怎么在苹果手机上玩安卓和平精英 浏览:237
python异步调用框架 浏览:963
安卓手机如何拍live图 浏览:823
供应链管理系统源码 浏览:944
方舟编译器会适配哪些型号 浏览:470
主流云服务器哪个牌子好 浏览:267
导航怎么看服务器在那 浏览:932
广石化单片机 浏览:281
和教育连接服务器失败是什么原因 浏览:1003