jsonp

python爬虫实例,一小时上手爬取淘宝评论(附代码)

纵然是瞬间 提交于 2020-04-23 22:32:48
前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 1 明确目的 通过访问天猫的网站,先搜索对应的商品,然后爬取它的评论数据。可以作为设计前期的市场调研的数据,帮助很大。 2 爬取评论并储存 (首先要进行登录,获取cookie)搜索你想收集的信息的评价,然后点开对应的产品图片。找到对应的评价的位置。 找到对应的位置之后就可以进行数据的爬取了,但是在爬取的过程中发现始终无法获取对应的数据。判断可能是因为没有添加cookie导致的,但是在添加了cookie之后发现依旧无法解决问题。 最后,发现应该是显示的数据是通过json解析之后显示在网页上的,因此需要多一些步骤来获取真正的爬取链接。 首先在network中,清除掉以往的数据信息,然后将页面进行刷新,复制其中的一条信息,进行搜索。在4中获得链接,并在5中获取到链接。 找到文件里面的访问url、cookie、referer、agent,将其复制在程序里。 大功告成,现在就可以进行数据的爬取了。 import pandas as pd import requests import re import time data_list = [] for i in range(1,20,1 ): print ( " 正在爬取第 " + str(i) + " 页 " ) #

SpringBoot上传文件夹的三种解决方案

∥☆過路亽.° 提交于 2020-04-23 21:49:02
需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制。 第一步: 前端修改 由于项目使用的是BJUI前端框架,并没有使用框架本身的文件上传控件,而使用的基于jQuery的Uploadify文件上传组件,在项目使用的jslib项目中找到了BJUI框架集成jQuery Uploadify的部分,这部分代码封装在bjui-all.js文件中, 在bjui-all.js文件中的全局变量定义中有以下部分代码,这就是定义的有关于上传的Uploadify控件的重要变量: //文件上传对象 function FileUploader(fileLoc, mgr) { var _this = this; this.id = fileLoc.id; this.ui = { msg: null, process: null, percent: null, btn: { del: null, cancel: null,post:null,stop:null }, div: null}; this.isFolder = false; //不是文件夹 this.app = mgr.app; this.Manager = mgr; //上传管理器指针 this.event = mgr.event; this

JAVA WEB项目文件夹上传下载求思路

一笑奈何 提交于 2020-04-23 14:08:10
javaweb上传文件 上传文件的jsp中的部分 上传文件同样可以使用form表单向后端发请求,也可以使用 ajax向后端发请求 1.通过form表单向后端发送请求 <form id="postForm" action="${pageContext.request.contextPath}/UploadServlet" method="post" enctype="multipart/form-data"> <div class="bbxx wrap"> <inputtype="text" id="side-profile-name" name="username" class="form-control"> <inputtype="file" id="example-file-input" name="avatar"> <button type="submit" class="btn btn-effect-ripple btn-primary">Save</button> </div> </form> 改进后的代码不需要form标签,直接由控件来实现。开发人员只需要关注业务逻辑即可。JS中已经帮我们封闭好了 this.post_file = function () { $.each(this.ui.btn, function (i, n) { n.hide();}); this

前端利用百度开发文档给的web服务接口实现对某个区域周边配套的检索

醉酒当歌 提交于 2020-04-22 05:48:11
  最近项目需要实现地图功能,以便于实现对房源周边配套设施的检索。内容如下   其实百度官方有对应的api,但是对于一个网站来说这样的样式难免有些难看   这样的结果显然不能满足当下的需求,所以我决定利用官方给的web服务接口加上覆盖物实现对应的效果。   由于我们用的vue框架,所以我采用了基于百度地图封装的插件: vue-baidu-map 实现,对应版本号是:0.21.18,项目安装依赖如下: npm install vue-baidu-map --save 然后在main.js中注入依赖即可: import BaiduMap from 'vue-baidu-map' Vue.use(BaiduMap, { ak: '申请的百度秘钥' }) 这里的ak需要去官方申请秘钥, 地址在这里 , 需要注意的是,申请完成之后会给你两个秘钥,我们需要给调起服务主机的ip加到白名单里,不然会有访问权限错误,由于现在是开发环境,所以我设置的是通配符*,也就是所有的主机,但是正是环境就不推荐这么做了,原因是前端代码容易泄露AK,被其他网站非法调用。 打开控制台,步骤如下: 白名单设置好以后,就能开始调用web服务了; 首先要注意一个问题,由于同源策略,我们直接调用百度官方的接口会出现跨域问题,关于什么是跨域,这里不多解释。那么前端处理跨域最理想的方案是jsonp

网站漏洞修复公司对JSONP协议检测

旧街凉风 提交于 2020-04-18 06:54:28
六一儿童节快到了,最近出了太多太多的漏洞,像前几天被爆出的cve-2019-0708漏洞,利用的是windows服务器远程桌面rdp协议进行的攻击,今天来给大家送一个礼物是关于网站方面的,jsonp漏洞可以导致csrf网站攻击。很多人会把jsonp跟json当成是一个东西,但真实情况不是这样的,先来介绍一下什么是jsonp,简单来讲就是一个可以解决网站跨域请求访问的一个语言,可以帮助网站跨域的去请求参数,使数据之间同步,很好的解决不同网站之间的通信问题。关于网站漏洞的JSONP劫持漏洞,我们来详细的分析看下。一般网站在设计功能过程加入jsonp实例代码,比如下面这一段,图1: 使用的是php语言开发的,很简单的一个第三方jsonp接口,返回用户名和密码,当get请求的时候就会返回我们需要的值,如果我们对callback值进行修改的时候,返回的值也会有所改变,那么这里就可以被我们利用,修改成恶意的代码,来欺骗用户点击,从而向服务器端里的json接口进行请求,当用户输入账号密码等信息的时候就已经不知不觉的提交到了攻击者的网站里,用户密码被泄露。如下图: JSONP漏洞应该算是属于csrf攻击,诱导用户点击并获取用户的账号密码等敏感信息,CSRF攻击还远远不止光可以获取用户的账号密码,还是做其他攻击用途,我们在日常的安全检测当中还遇到过csrf防护使用了token动态值

【开发记录】如何在B/S项目中使用中国天气的实时天气功能

匆匆过客 提交于 2020-04-18 06:03:30
  好久没有更新我的博客了,正好手头有一个比较合适的项目经验可以分享出来,就是这个如何使用中国天气的天气预报功能,也正好做个项目经验记录。 功能需求   这个功能需求比较简单,就是想在网页端显示实时天气数据。   解决方案:   第一种:使用百度地图的api来做,以 定位 为例,可以很方便的查找到用的的所在地,进而进行天气查询(或者一步到位,直接能获取到用户所在地的天气信息);然而使用百度地图的api需要去申请一个key才能使用,比较的麻烦,于是就放弃了,有兴趣的园友可以自己去尝试一下;   第二种:既然方便的方式用不了,那么只能自己去寻找另一种的解决方案了;获取实时天气的步骤我给分了两步,第一步先获取用户的所在地,第二步根据所在地获取实时天气数据。   跨域的问题:   先在这里把跨域的问题提一下吧,js的ajax功能为了安全性考虑,只允许ajax访问相同域名下的接口,其他网站是不允许访问的;虽说ajax有jsonp的跨域请求,但是也得要求被访问的接口支持jsonp的数据格式返回(jsonp也是有一定的数据解析格式的),然而本文提到的接口基本上都是返回html或者字符串,是不符合jsonp数据解析的,因此这里需要后台来进行代理请求(就是js访问自己的后台,然后后台进行一次web请求而已)。 代码实现   获取城市   第一种:    http://2018.ip138.com

JSONP Hijackin攻击详解

ぐ巨炮叔叔 提交于 2020-04-18 04:11:57
如下文章是早期编写,有一些错误,建议读新写的文章: https://www.cnblogs.com/mysticbinary/p/12620152.html JSONP Hijackin的中文意思是JSON劫持,而能产生JSON数据劫持的原因在于前端被跨站攻击了。跨站=跨域,跨域从字面上理解的话,就是指超出了范围、领域。继续追问一下,那超出了什么范围?原来指的范围有多大?理解跨站攻击的基础在于理解这个域有多大。为了更准确的理解JSON Hijackin攻击,建议读者可以先了解一下如下几个背景知识: 域概念 (下文会介绍) JSON (搜索引擎查一下) 接口回调 (建议看我之前的文章: https://www.cnblogs.com/mysticbinary/p/11869181.html) <br> 域概念解释 在计算机领域里很多地方都会用到这个 域 ,而不同地方所包含的含义却是不相同的,比如说写代码定义的变量有作用域,在局域网建设中有网络域,Internet有一项核心服务是域名解析系统(DNS)。本文所讨论的域就是指DNS的域名。 DNS的工作原理: 在全球各地有众多服务器(分布式),在这些服务器里面都同步的保存着域名和IP的一一映射,这样人们就可以不用记住枯燥的IP地址,只记住有意思的单词域名就行了。 域介绍: 域通过一个点 . 来来分开一个域。域名不区分大小写,有唯一性

由"跨域"引出的一个终极思想(jsonp)

有些话、适合烂在心里 提交于 2020-04-18 03:41:09
1.什么是跨域? 当协议、子域名、主域名、端口号中任意一个不相同时,都算作不同域. 跨域并不是请求发不出去,请求能发出去,服务端能收到请求并正常返回结果,但是因为浏览器存在一个"同源策略",结果就被浏览器拦截了。 同源策略限制以下几种行为: Cookie、LocalStorage 和 IndexDB 无法读取 DOM和JS对象无法获得 AJAX 请求不能发送 举个例子:当一个页面中存在js或者jq的ajax请求,当该请求与当前域中的协议、子域名、主域名、端口号中任意一个不相同时,都是跨域, 最后再简单来说:浏览器具有“同源策略”,即: 因为浏览器存在一个"同源策略",浏览器只能想当前所在的域发送Ajax,如果向其他域发送请求,则浏览器就会报错。 2.处理跨域的两种方法 解决办法有两个: cors方法: 这个方法是一个主流方法,通过设置响应对象的响应头,去强制允许浏览器接受跨域的响应对象 def api (request) : ret : = HttpResponse('百度') ret["Access-Control- Allow -Origin"] = "*” #设置响应对象的响应头,接受任何跨域响应对象 return ret jsonp: 这是一种思想,不是 处理跨域问题的最好方法 ,绝对的爆炸思想 一个解决跨域的方案,是一种巧妙的机制,可以绕过浏览器的同源策略,实现跨域

跨域解决方案之JSONP,通过借助调用百度搜索的API了解跨域案例

最后都变了- 提交于 2020-04-18 02:49:03
跨域解决方案之JSONP 同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。 同源策略,它是由Netscape提出的一个著名的安全策略。 现在所有支持JavaScript 的浏览器都会使用这个策略。所谓同源是指,域名,协议,端口相同。 例如: http://www.baidu.com 和 http://www.baidu.com:8080 二者是不同源的。 http://www.baidu.com和https://www.baidu.com 同样是不同源的。 当请求不同源的数据的时候,浏览器就会在控制台报出一个异常,并且提示拒绝访问。同源策略是浏览器的行为,是为了保护本地数据不被JavaScript代码获取回来的数据污染,因此拦截的是客户端发出的请求回来的数据接收,即请求发送了,服务器响应了,但是无法被浏览器接收。 JSONP介绍 JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML

SpringBoot大文件上传解决方案

微笑、不失礼 提交于 2020-04-17 01:04:04
【推荐阅读】微服务还能火多久?>>> 这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得出来,实体类中已经有很多我们需要的功能了,还有实用的属性。如MD5秒传的信息。 public class FileInf { public FileInf(){} public String id=""; public String pid=""; public String pidRoot=""; /** * 表示当前项是否是一个文件夹项。 */ public boolean fdTask=false; // /// 是否是文件夹中的子文件 /// </summary> public boolean fdChild=false; /** * 用户ID。与第三方系统整合使用。 */ public int uid=0; /** * 文件在本地电脑中的名称 */ public String nameLoc=""; /** * 文件在服务器中的名称。 */ public String nameSvr=""; /** * 文件在本地电脑中的完整路径。示例:D:\Soft\QQ2012.exe */ public String pathLoc=""; /**