cookie

Python爬虫:设置Cookie解决网站拦截并爬取蚂蚁短租

杀马特。学长 韩版系。学妹 提交于 2019-12-05 09:14:00
前言 文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 作者: Eastmount PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef 我们在编写Python爬虫时,有时会遇到网站拒绝访问等反爬手段,比如这么我们想爬取蚂蚁短租数据,它则会提示“当前访问疑似黑客攻击,已被网站管理员设置为拦截”提示,如下图所示。此时我们需要采用设置Cookie来进行爬取,下面我们进行详细介绍。非常感谢我的学生承峰提供的思想,后浪推前浪啊! 一. 网站分析与爬虫拦截 当我们打开蚂蚁短租搜索贵阳市,反馈如下图所示结果。 我们可以看到短租房信息呈现一定规律分布,如下图所示,这也是我们要爬取的信息。 通过浏览器审查元素,我们可以看到需要爬取每条租房信息都位于 <dd> </dd> 节点下。 在定位房屋名称,如下图所示,位于 <div class="room-detail clearfloat"> </div> 节点下。 接下来我们写个简单的BeautifulSoup进行爬取。 1 # -*- coding: utf-8 -*- 2 import urllib 3 import re 4

Flask上下文管理

大兔子大兔子 提交于 2019-12-05 09:04:40
Flask上下文管理机制 可以从三个大的方面来探讨flask的两大上下文管理机制 方面一:请求进来时 方面二:视图函数 方面三:请求结束前 请求进来时 触发执行__call__方法,__call__方法的逻辑很简单,直接执行wsgi_app方法,将包含所有请求相关数据和一个响应函数传进去。2019-11-23 def application(environ, start_response): start_response('200 OK', [('Content-Type', 'text/html')]) return '<h1>Hello, web!</h1>' 上面的application()函数就是符合WSGI标准的一个HTTP处理函数,它接收两个参数: environ:一个包含所有HTTP请求信息的dict对象; start_response:一个发送HTTP响应的函数。 在application()函数中,调用: start_response('200 OK', [('Content-Type', 'text/html')]) 符合wsgi协议标准的函数   备注:__call__是一个符合wsgi标准的函数 执行wsgi_app方法 def wsgi_app(self, environ, start_response): ctx = self.request

Flask框架

梦想的初衷 提交于 2019-12-05 09:04:07
Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。 “微”(micro) 并不表示你需要把整个 Web 应用塞进单个 Python 文件(虽然确实可以 ),也不意味着 Flask 在功能上有所欠缺。微框架中的“微”意味着 Flask 旨在保持核心简单而易于扩展。Flask 不会替你做出太多决策——比如使用何种数据库。而那些 Flask 所选择的——比如使用何种模板引擎——则很容易替换。除此之外的一切都由可由你掌握。 默认情况下,Flask 不包含数据库抽象层、表单验证,或是其它任何已有多种库可以胜任的功能。然而,Flask 支持用扩展来给应用添加这些功能,如同是 Flask 本身实现的一样。众多的扩展提供了数据库集成、表单验证、上传处理、各种各样的开放认证技术等功能。Flask 也许是“微小”的,但它已准备好在需求繁杂的生产环境中投入使用。 一、基本使用flask from flask import Flask

Flask -- 02. flask框架的流程使用

给你一囗甜甜゛ 提交于 2019-12-05 08:55:29
Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。 “微”(micro) 并不表示你需要把整个 Web 应用塞进单个 Python 文件(虽然确实可以 ),也不意味着 Flask 在功能上有所欠缺。微框架中的“微”意味着 Flask 旨在保持核心简单而易于扩展。Flask 不会替你做出太多决策——比如使用何种数据库。而那些 Flask 所选择的——比如使用何种模板引擎——则很容易替换。除此之外的一切都由可由你掌握。 默认情况下,Flask 不包含数据库抽象层、表单验证,或是其它任何已有多种库可以胜任的功能。然而,Flask 支持用扩展来给应用添加这些功能,如同是 Flask 本身实现的一样。众多的扩展提供了数据库集成、表单验证、上传处理、各种各样的开放认证技术等功能。Flask 也许是“微小”的,但它已准备好在需求繁杂的生产环境中投入使用。 一、基本使用flask from flask import Flask

运营商爬虫

别来无恙 提交于 2019-12-05 08:34:16
随着贷款,信用消费等兴起,如今越来越多公司需要客户的运营商报告 然后数据量非常大的运营商报告,即使客户自己也很难齐全地获取,这时候,就需要客户授权给我们,进行运营商数据的爬取 注意,运营商数据三网的爬取方式都是不同的,今天先以移动为例说明: 大体流程:客户授权 -> 分发程序 -> 开始爬取 如果有问题的朋友,或者想直接调用已开发好的接口,都可随时联系:手机/微信:15625101713 using Gecko; using Gecko.Net; using Gecko.Observers; using Gecko.WebIDL; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.IO; using System.IO.Compression; using System.Linq; using System.Net; using System.Net.Http; using System.Text; using

详解Django的CSRF认证

為{幸葍}努か 提交于 2019-12-05 07:44:11
1.csrf原理 csrf要求发送post,put或delete请求的时候,是先以get方式发送请求,服务端响应时会分配一个随机字符串给客户端,客户端第二次发送post,put或delete请求时携带上次分配的随机字符串到服务端进行校验 2.Django中的CSRF中间件 首先,我们知道Django中间件作用于整个项目。 在一个项目中,如果想对全局所有视图函数或视图类起作用时,就可以在中间件中实现,比如想实现用户登录判断,基于用户的权限管理(RBAC)等都可以在Django中间件中来进行操作 Django内置了很多中间件,其中之一就是CSRF中间件 MIDDLEWARE_CLASSES = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware

Flask拾遗总汇1

情到浓时终转凉″ 提交于 2019-12-05 07:33:14
目录 1.flask的路由分发方式 2.请求响应相关 3.flask配置文件拾遗(config) 4.路由系统参数配置 4.1 可传入参数: 4.2 常用路由系统有以上五 5.反向生成URL: url_for 6.flask路由系统的正则匹配配置 7.Flask中的CBV模式 8.Flask中的FBV模式 9.Flask中的请求与相应 10.Flask模板语法(jinja2) 11.session 12.闪现 : flash flask依赖wsgi,实现wsgi的模块:wsgiref,werkzeug,uwsgi 1.flask的路由分发方式 路由分发的本质:将url和视图函数封装成一个Rule对象,添加到Flask的url_map字段中 方式一: @app.route('/xxxx') # @decorator def index(): return "Index" 方式二: def index(): return "Index" app.add_url_rule('/xxx', "n1", index) #n1是别名 2.请求响应相关 - request - request.form #POST请求 - request.args #GET请求 字典形式的 - request.querystring #GET请求,bytes形式的 - response - return

AJAX学习笔记——同源策略

旧时模样 提交于 2019-12-05 07:04:22
同源策略 同源策略,所有 浏览器 都实行这个政策 最初,它的含义是指,A 网页设置的 Cookie,B 网页不能打开,除非这两个网页“同源”。所谓“同源”指的是“三个相同”。 协议相同 域名相同 端口相同 同源策略的目的 为了保证用户信息安全,防止恶意的网站窃取数据。(防止Cookie共享,比如用户的登录信息) 限制范围 随着互联网的发展,同源政策越来越严格。目前,如果非同源,共有三种行为受到限制。 无法读取非同源网页的 Cookie、LocalStorage 和 IndexedDB。 无法接触非同源网页的 DOM。 无法向非同源地址发送 AJAX 请求(可以发送,但浏览器会拒绝接受响应)。 解决无法读取非同源网页的 Cookie方法 domain 属性可以解决因同源安全策略带来的不同文档的属性共享问题。 domain 属性可返回下载当前文档的服务器域名。(即当前文档所在的服务器域名) Cookie 是服务器写入浏览器的一小段信息,只有同源的网页才能共享。如果两个网页一级域名相同,只是次级域名不同,浏览器允许通过设置document.domain共享 Cookie。 因为浏览器通过document.domain属性来检查是否同源。 另外,服务器也可以在设置 Cookie 的时候,指定 Cookie 的所属域名为一级域名,比如.example.com。 这样的话

session

落花浮王杯 提交于 2019-12-05 06:41:43
最近一直在学习session,然后看了很多关于session的知识。 一、什么是Session,如何使用? Session是用于存放用户与web服务器之间的会话,即服务器为客户端开辟的存储空间。 由于客户端与服务器之间的会话是无状态的机制,Session则可用于关联访问,因此多用与用户登录等功能上。 我们可以调用request的getsession()方法来使用session,通过setAttribute()注入值: //引号中的"xxx"为页面中name标签里的值,逗号后面的是Servlet中的变量名。 request.getSession().setAttribute("xxx",xxx);//储存到session中   之后可以用 getAttribute() 方法来获取session中的值: request.getSession().getAttribute("xxx",xxx);//读取session中的值    [注]:无状态的意思是会话之间无关联性,无法识别该用户曾经访问过。 二、Session的意义何在? Session存在的意义是为了提高安全性,它将关键数据存在服务器端。与cookie不同,cookie则是将数据存在客户端的浏览器中。 因此cookie是较为危险的,若客户端遭遇黑客攻击,信息容易被窃取,数据也可能被篡改

在ASP.NET MVC3 中利用JSONP跨域登录WEB系统(加强版)

为君一笑 提交于 2019-12-05 06:08:05
本文为 在ASP.NET MVC3 中利用JSONP跨域登录WEB系统 这篇文章的改进版。在上文中首先感谢园友们的热心讨论。本文将对跨域登录进行一改进,改进内容如下: 跨域登录后不同系统之间的cookie管理。 主系统注销登录后子系统同步注销。 支持除IE外的FireFox 、Opera、Chrome、Safari主流浏览器。 若要管理好cookie,这里以为多个ASP.NET MVC3 功能为例。用.NET的 IFormsAuthenticationService 进行权限认证。我们只要在web.config中这样设置: <authentication mode="Forms"> <forms loginUrl="~/Account/LogOn" timeout="2880" name="App1" /> </authentication> 请注意红色部分,这样IIS set-cookie 权限时将以App1作为Cookie名,否则会用asp.net默认名称作为cookie名称。这样我们有多系统jsonp登录时,保存用户的cookie就会被覆盖。 如果您也感兴趣,可以使用抓包工具查看IIS 对用户权限认证 set-cookie 过程。 在jQuery1.5中使用jsonp我发现只有IE下正常,其他的浏览器都不正常。经过一番搜索找到解决方案: http://code.google