首页 文章 精选 留言 我的

精选列表

搜索[Web安全],共10017篇文章
优秀的个人博客,低调大师

1、web爬虫,requests请求

【转载自:https://www.jianshu.com/u/3fe4aab60ac4】requests请求,就是用python的requests模块模拟浏览器请求,返回html源码 模拟浏览器请求有两种,一种是不需要用户登录或者验证的请求,一种是需要用户登录或者验证的请求 一、不需要用户登录或者验证的请求 这种比较简单,直接利用requests模块发一个请求即可拿到html源码 #!/usr/bin/envpython #-*-coding:utf8-*- importrequests#导入模拟浏览器请求模块 http=requests.get(url="http://www.iqiyi.com/")#发送http请求 http.encoding="utf-8"#http请求编码 neir=http.text#获取http字符串代码 print(neir) 得到html源码 <!DOCTYPEhtml> <html> <head> <title>抽屉新热榜-聚合每日热门、搞笑、有趣资讯</title> <metacharset="utf-8"/> <metaname="keywords"content="抽屉新热榜,资讯,段子,图片,公众场合不宜,科技,新闻,节操,搞笑"/> <metaname="description"content=" 抽屉新热榜,汇聚每日搞笑段子、热门图片、有趣新闻。它将微博、门户、社区、bbs、社交网站等海量内容聚合在一起,通过用户推荐生成最热榜单。看抽屉新热榜,每日热门、有趣资讯尽收眼底。 "/> <metaname="robots"content="index,follow"/> <metaname="GOOGLEBOT"content="index,follow"/> <metaname="Author"content="搞笑"/> <metahttp-equiv="X-UA-Compatible"content="IE=EmulateIE8"> <linktype="image/x-icon"href="/images/chouti.ico"rel="icon"/> <linktype="image/x-icon"href="/images/chouti.ico"rel="ShortcutIcon"/> <linktype="image/x-icon"href="/images/chouti.ico"rel="bookmark"/> <linktype="application/opensearchdescription+xml" href="opensearch.xml"title="抽屉新热榜"rel="search"/> 二、需要用户登录或者验证的请求 获取这种页面时,我们首先要了解整个登录过程,一般登录过程是,当用户第一次访问时,会自动在浏览器生成cookie文件,当用户输入登录信息后会携带着生成的cookie文件,如果登录信息正确会给这个cookie 授权,授权后以后访问需要登录的页面时携带授权后cookie即可 1、首先访问一下首页,然后查看是否有自动生成cookie #!/usr/bin/envpython #-*-coding:utf8-*- importrequests#导入模拟浏览器请求模块 ###1、在没登录之前访问一下首页,获取cookie i1=requests.get( url="http://dig.chouti.com/", headers={'Referer':'http://dig.chouti.com/'} ) i1.encoding="utf-8"#http请求编码 i1_cookie=i1.cookies.get_dict() print(i1_cookie)#返回获取到的cookie #返回:{'JSESSIONID':'aaaTztKP-KaGLbX-T6R0v','gpsd':'c227f059746c839a28ab136060fe6ebe','route':'f8b4f4a95eeeb2efcff5fd5e417b8319'} 可以看到生成了cookie,说明如果登陆信息正确,后台会给这里的cookie授权,以后访问需要登录的页面携带授权后的cookie即可 2、让程序自动去登录授权cookie 首先我们用浏览器访问登录页面,随便乱输入一下登录密码和账号,获取登录页面url,和登录所需要的字段 携带cookie登录授权 #!/usr/bin/envpython #-*-coding:utf8-*- importrequests#导入模拟浏览器请求模块 ###1、在没登录之前访问一下首页,获取cookie i1=requests.get( url="http://dig.chouti.com/", headers={'Referer':'http://dig.chouti.com/'} ) i1.encoding="utf-8"#http请求编码 i1_cookie=i1.cookies.get_dict() print(i1_cookie)#返回获取到的cookie #返回:{'JSESSIONID':'aaaTztKP-KaGLbX-T6R0v','gpsd':'c227f059746c839a28ab136060fe6ebe','route':'f8b4f4a95eeeb2efcff5fd5e417b8319'} ###2、用户登陆,携带上一次的cookie,后台对cookie中的随机字符进行授权 i2=requests.post( url="http://dig.chouti.com/login",#登录url data={#登录字段 'phone':"8615284816568", 'password':"279819", 'oneMonth':"" }, headers={'Referer':'http://dig.chouti.com/'}, cookies=i1_cookie#携带cookie ) i2.encoding="utf-8" dluxxi=i2.text print(dluxxi)#查看登录后服务器的响应 #返回:{"result":{"code":"9999","message":"","data":{"complateReg":"0","destJid":"cdu_50072007463"}}}登录成功 3、登录成功后,说明后台已经给cookie授权,这样我们访问需要登录的页面时,携带这个cookie即可,比如获取个人中心 #!/usr/bin/envpython #-*-coding:utf8-*- importrequests#导入模拟浏览器请求模块 ###1、在没登录之前访问一下首页,获取cookie i1=requests.get( url="http://dig.chouti.com/", headers={'Referer':'http://dig.chouti.com/'} ) i1.encoding="utf-8"#http请求编码 i1_cookie=i1.cookies.get_dict() print(i1_cookie)#返回获取到的cookie #返回:{'JSESSIONID':'aaaTztKP-KaGLbX-T6R0v','gpsd':'c227f059746c839a28ab136060fe6ebe','route':'f8b4f4a95eeeb2efcff5fd5e417b8319'} ###2、用户登陆,携带上一次的cookie,后台对cookie中的随机字符进行授权 i2=requests.post( url="http://dig.chouti.com/login",#登录url data={#登录字段 'phone':"8615284816568", 'password':"279819", 'oneMonth':"" }, headers={'Referer':'http://dig.chouti.com/'}, cookies=i1_cookie#携带cookie ) i2.encoding="utf-8" dluxxi=i2.text print(dluxxi)#查看登录后服务器的响应 #返回:{"result":{"code":"9999","message":"","data":{"complateReg":"0","destJid":"cdu_50072007463"}}}登录成功 ###3、访问需要登录才能查看的页面,携带着授权后的cookie访问 shouquan_cookie=i1_cookie i3=requests.get( url="http://dig.chouti.com/user/link/saved/1", headers={'Referer':'http://dig.chouti.com/'}, cookies=shouquan_cookie#携带着授权后的cookie访问 ) i3.encoding="utf-8" print(i3.text)#查看需要登录才能查看的页面 获取需要登录页面的html源码成功 全部代码 get()方法,发送get请求encoding属性,设置请求编码cookies.get_dict()获取cookiespost()发送post请求text获取服务器响应信息 #!/usr/bin/envpython #-*-coding:utf8-*- importrequests#导入模拟浏览器请求模块 ###1、在没登录之前访问一下首页,获取cookie i1=requests.get( url="http://dig.chouti.com/", headers={'Referer':'http://dig.chouti.com/'} ) i1.encoding="utf-8"#http请求编码 i1_cookie=i1.cookies.get_dict() print(i1_cookie)#返回获取到的cookie #返回:{'JSESSIONID':'aaaTztKP-KaGLbX-T6R0v','gpsd':'c227f059746c839a28ab136060fe6ebe','route':'f8b4f4a95eeeb2efcff5fd5e417b8319'} ###2、用户登陆,携带上一次的cookie,后台对cookie中的随机字符进行授权 i2=requests.post( url="http://dig.chouti.com/login",#登录url data={#登录字段 'phone':"8615284816568", 'password':"279819", 'oneMonth':"" }, headers={'Referer':'http://dig.chouti.com/'}, cookies=i1_cookie#携带cookie ) i2.encoding="utf-8" dluxxi=i2.text print(dluxxi)#查看登录后服务器的响应 #返回:{"result":{"code":"9999","message":"","data":{"complateReg":"0","destJid":"cdu_50072007463"}}}登录成功 ###3、访问需要登录才能查看的页面,携带着授权后的cookie访问 shouquan_cookie=i1_cookie i3=requests.get( url="http://dig.chouti.com/user/link/saved/1", headers={'Referer':'http://dig.chouti.com/'}, cookies=shouquan_cookie#携带着授权后的cookie访问 ) i3.encoding="utf-8" print(i3.text)#查看需要登录才能查看的页面 注意:如果登录需要验证码,那就需要做图像处理,根据验证码图片,识别出验证码,将验证码写入登录字段

优秀的个人博客,低调大师

第 24 章 Web Server

目录 24.1. Apache httpd 24.1.1. Install 24.1.2. Uninstall 24.1.3. Configure 24.1.3.1. Apache 24.1.3.2. MySQL 24.1.4. Starting 24.1.5. FAQ 24.1.5.1. compile php 24.2. Nginx 24.2.1. install nginx 24.2.1.1. spawn-fcgi script 24.2.1.2. php-fpm 24.2.1.3. fastcgi backend 24.1.Apache httpd [root@development httpd-2.2.14]# yum install zlib-devel.x86_64 ./configure --prefix=/usr/local/httpd-2.2.14 \ --with-mpm=worker \ --enable-so \ --enable-mods-shared=all \ --enable-static-support \ --enable-static-htpasswd \ --enable-static-htdigest \ --enable-static-ab \ --disable-include \ --disable-actions \ --disable-alias \ --disable-asis \ --disable-autoindex \ --disable-auth_basic \ --disable-authn_file \ --disable-authn_default \ --disable-authz_groupfile \ --disable-authz_user \ --disable-authz_default \ --disable-cgi \ --disable-cgid \ --disable-env \ --disable-negotiation \ --disable-status \ --disable-userdir 24.1.1.Install Apache [root@development ~]# yum -y install httpd PHP [root@development ~]# yum -y install php [root@development ~]# yum -y install php-mysql php-gd php-mbstring php-bcmath [neo@development ~]$ sudo yum -y install php-pecl-memcache mysql [root@development ~]# yum -y install mysql-server 24.1.2.Uninstall # yum remove httpd 24.1.3.Configure 24.1.3.1.Apache 24.1.3.1.1.VirtualHost [root@development ~]# vim /etc/httpd/conf.d/vhost.conf # # Use name-based virtual hosting. # NameVirtualHost *:80 # # NOTE: NameVirtualHost cannot be used without a port specifier # (e.g. :80) if mod_ssl is being used, due to the nature of the # SSL protocol. # # # VirtualHost example: # Almost any Apache directive may go into a VirtualHost container. # The first VirtualHost section is used for requests without a known # server name. # <VirtualHost *:80> ServerAdmin webmaster@dummy-host.example.com DocumentRoot /www/docs/dummy-host.example.com ServerName dummy-host.example.com ErrorLog logs/dummy-host.example.com-error_log CustomLog logs/dummy-host.example.com-access_log common </VirtualHost> 24.1.3.2.MySQL reset mysql's password [root@development ~]# /usr/bin/mysqladmin -u root password 'new-password' [root@development ~]# /usr/bin/mysqladmin -u root -h development.domain.org password 'new-password' Alternatively you can run: [root@development ~]# /usr/bin/mysql_secure_installation 24.1.4.Starting levels [root@development ~]# chkconfig --list mysqld mysqld 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@development ~]# chkconfig --list httpd httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@development ~]# chkconfig httpd on [root@development ~]# chkconfig --list httpd httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@development ~]# chkconfig mysqld on [root@development ~]# chkconfig --list mysqld mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off Apache [root@development ~]# service httpd start MySQL [root@development ~]# service mysqld start [root@development ~]# netstat -nat | grep 80 tcp 0 0 :::80 :::* LISTEN [root@development ~]# netstat -nat | grep 3306 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 24.1.5.FAQ 24.1.5.1.compile php [root@development php-5.3.0]# yum install libxml2-devel [root@development php-5.3.0]# yum install curl-devel [root@development php-5.3.0]# yum install gd-devel [root@development php-5.3.0]# yum install libjpeg-devel [root@development php-5.3.0]# yum install libpng-devel [root@development php-5.3.0]# yum install openldap-devel [root@development php-5.3.0]# yum install mysql-devel [root@development php-5.3.0]# yum install net-snmp-devel Please enable JavaScript to view the &lt;a href="http://disqus.com/?ref_noscript"&gt;comments powered by Disqus.&lt;/a&gt;comments powered by Disqus 原文出处:Netkiller 系列 手札 本文作者:陈景峯 转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册