OpENer

反爬与反反爬

佐手、 提交于 2020-12-27 00:27:24
很多网站都有反爬机制,自从有了爬虫,反爬与反反爬的斗争就没停过,而且都在不断升级。 下面介绍一些常见的反爬与反反爬机制。 基于headers的反爬 基于用户请求的headers反爬是最常见的反爬机制。 在请求头headers中,包含很多键值对,服务器会根据这些键值对进行反爬。 1. User-Agent:请求使用的终端,正常为浏览器,如果使用爬虫,就会显示如python 反反爬策略:伪装浏览器 即在爬虫中添加headers,并在headers中添加浏览器 并且可通过频繁更换user-agent实现反爬 header={ ' User-Agent ' : ' Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko ' } 2. referer:防盗链 盗链:其他站点通过超链接等连接到我们的站点窃取我们的资源的行为称为盗链 referer请求头:代表当前访问是从哪个网页过来的 如我们的网站上有一个很好的图片,别人可以通过查看我们的链接直接用到他的网站上,此时我们如果设置referer,他就无法直接使用 具体解释请自行百度。 反反爬策略:在headers中添加防盗链,通过抓包查看具体值 request.add_header( ' Referer ' , ' http://www.abwuliu.com

python urllib和urllib3包使用

依然范特西╮ 提交于 2020-12-26 07:56:50
urllib包 urllib是一个包含几个模块来处理请求的库。 分别是: urllib.request 发送http请求 urllib.error 处理请求过程中,出现的异常。 urllib.parse 解析url urllib.robotparser 解析robots.txt 文件 urllib.request urllib当中使用最多的模块,涉及请求,响应,浏览器模拟,代理,cookie等功能。 1. 快速请求 urlopen返回对象提供一些基本方法: read 返回文本数据 info 服务器返回的头信息 getcode 状态码 geturl 请求的url request.urlopen(url, data=None, timeout=10 ) # url: 需要打开的网址 # data:Post提交的数据 # timeout:设置网站的访问超时时间 from urllib import request import ssl # 解决某些环境下报<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed ssl._create_default_https_context = ssl._create_unverified_context url = ' https://www.jianshu

使用 cordova-plugin-wechat 分享返回后闪退解决方法

人走茶凉 提交于 2020-11-29 06:44:45
因为要使用cordova进行微信分享,网上搜索,使用cordova-plugin-wechat插件能够完成我想要的功能。 一番编码后,分享,美滋滋。分享完成,返回。。。。wtf!闪退! 在原作者github上,FAQ模块找到了问题所在, https://jasonz1987.github.io/cordova-wechat-docs/docs/faq 升级,说干就干。一顿操作猛如虎,好了,不闪退了。美滋滋。发布版本,美滋滋。 半个月后,新的需求来了,一顿编码后。依然老样子,打包,发布。写程序总是这么朴实无华,且枯燥。 几分钟后,QQ跳起来了,映入眼帘有几个大字:app更新失败,报错了。 我方了,一顿调试后,得到报错原因: android.os.FileUriExposedException: file:///storage/emulated.. exposed beyond app through Intent.getData() 原来是cordova-plugin-file-opener2插件打开app的时候报错了。 一顿查找(我是野生安卓,只会一点,主攻前端)后,网友都说要加一个权限,加一个provider。甚至连cordova-plugin-file-opener2插件github上都这么说 https://github.com/pwlin/cordova-plugin

《Python Cookbook 3rd》笔记(4.13):创建数据处理管道

吃可爱长大的小学妹 提交于 2020-11-28 01:37:06
创建数据处理管道 问题 你想以数据管道 (类似 Unix 管道) 的方式迭代处理数据。比如,你有个大量的数据需要处理,但是不能将它们一次性放入内存中。 解法 生成器函数是一个实现管道机制的好办法。为了演示,假定你要处理一个非常大的日志文件目录: foo/ access-log-012007.gz access-log-022007.gz access-log-032007.gz ... access-log-012008 bar/ access-log-092007.bz2 ... access-log-022008 假设每个日志文件包含这样的数据: 124.115.6.12 - - [10/Jul/2012:00:18:50 -0500] "GET /robots.txt ..." 200 71 210.212.209.67 - - [10/Jul/2012:00:18:51 -0500] "GET /ply/ ..." 200 11875 210.212.209.67 - - [10/Jul/2012:00:18:51 -0500] "GET /favicon.ico ..." 404 369 61.135.216.105 - - [10/Jul/2012:00:20:04 -0500] "GET /blog/atom.xml ..." 304 - ... 为了处理这些文件

python爬虫之urllib库(一)

心不动则不痛 提交于 2020-11-26 08:07:33
python爬虫之urllib库(一)   urllib库    urllib库是python提供的一种用于操作URL的模块,python2中是urllib和urllib2两个库文件,python3中整合在了urllib一个库中。即在Python中导入和调用方法也发生了改变。 python2和python3中urllib库变化对比 python2 python3 import urllib2 import urllib.request,urllib.request import urllib import urllib.reqest,urllib.error,urllib.parse import parse import urllib.parse urllib2.urlopen urllib.request.urlopen urllib.urlencode urllib.parse.urlencode urllib.quote urllib.request.quote cookielib.CookieJar http.CookieJar urllib2.Request urllib.request.Request   使用urllib库快速爬取网页   使用urllib库需要导入urllib库中对应的模块。   import urllib.request   导入对应模块以后

window.opener引用为null的解决办法

自闭症网瘾萝莉.ら 提交于 2020-11-19 02:52:47
项目使用的是iframe来包含新打开的页面,在使用IE的时候,通过window.open打开子页面之后,在子页面是可以获取到打开窗口的父页面的引用,但是在使用firefox与chrome的时候,却无法获得。而且使用window.close也无法关闭弹窗。针对这2个问题,找到了以下的解决办法,有更好的解决办法: 一、解决window.opener返回结果为null的问题 1、通过interval,在父页面定时为子页面添加引用 var c_win = window.open(url, "pageName", "feathers");//参数根据API填写 var intervalTemp = setInterval(function () {//设置一个interval,每隔1s去执行一次,为子页面添加opener属性值,获取到子页面已经关闭,则清除interval if ("complete" == c_win .document.readyState) { c_win .opener = window; } if (c_win .closed) { clearInterval(intervalTemp); } }, 1000) 2、为父页面window添加属性 这个方法就是为父页面添加一个属性,当子页面需要去获取父页面的引用时,只需要获取顶级窗口,遍历页面的所有iframe

eslint整改代码遇到的问题和解决方案

纵然是瞬间 提交于 2020-11-15 11:12:21
近期公司前端进行代码规范,整理了一套eslint校验规则,如下所示: rules : { 'no-var' : 'error' , // 禁止使用var 'prefer-const' : 'error' , // 建议使用const 'no-const-assign' : 'error' , // 禁止修改使用const(no-const-assign)声明的变量 'object-shorthand' : 'error' , // 方法属性值简写 'quote-props' : [ 'error' , 'as-needed' ] , // 只对那些无效的标示使用引号 '' 'no-array-constructor' : 'error' , // 数组要求字面量赋值 'no-new-object' : 'error' , // 对象要求字面值创建对象 'array-callback-return' : 'error' , // 在数组方法的回调中强制执行 quotes : [ 'error' , 'single' ] , // string 统一用单引号 '' 'prefer-template' : 'error' , // 建议使用模板字符串 'no-eval' : 'error' , // 禁止使用eval 'no-useless-escape' : 'error' , //

Python 爬虫从入门到进阶之路(五)

元气小坏坏 提交于 2020-10-31 09:32:07
在之前的文章中我们带入了 opener 方法,接下来我们看一下 opener 应用中的 ProxyHandler 处理器(代理设置)。 使用代理IP,这是爬虫/反爬虫的第二大招,通常也是最好用的。 很多网站会检测某一段时间某个IP的访问次数(通过流量统计,系统日志等),如果访问次数多的不像正常人,它会禁止这个IP的访问。 所以我们可以设置一些代理服务器,每隔一段时间换一个代理,就算IP被禁止,依然可以换个IP继续爬取。 urllib.request 中通过ProxyHandler来设置使用代理服务器,下面代码说明如何使用自定义 opener 来使用代理: 1 import urllib.request 2 3 # 构建了两个代理Handler,一个有代理IP,一个没有代理IP 4 httpproxy_handler = urllib.request.ProxyHandler({ " https " : " 27.191.234.69:9999 " }) 5 nullproxy_handler = urllib.request.ProxyHandler({}) 6 7 # 定义一个代理开关 8 proxySwitch = True 9 10 # 通过 urllib.request.build_opener()方法使用这些代理Handler对象,创建自定义opener对象 11 #

C# Web大文件分片上传/多线程上传

天大地大妈咪最大 提交于 2020-10-24 16:05:47
ASP.NET上传文件用FileUpLoad就可以,但是对文件夹的操作却不能用FileUpLoad来实现。 下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压。 ASP.NET页面设计:TextBox和Button按钮。 TextBox中需要自己受到输入文件夹的路径(包含文件夹),通过Button实现选择文件夹的问题还没有解决,暂时只能手动输入。 两种方法:生成rar和zip。 1.生成rar using Microsoft.Win32; using System.Diagnostics; protected void Button1Click(object sender, EventArgs e) { RAR(@"E:\95413594531\GIS", "tmptest", @"E:\95413594531\"); } /// /// 压缩文件 /// /// 需要压缩的文件夹或者单个文件 /// 生成压缩文件的文件名 /// 生成压缩文件保存路径 /// protected bool RAR(string DFilePath, string DRARName,string DRARPath) { String therar; RegistryKey theReg; Object theObj; String theInfo;

python方式下自动登录51cto

ε祈祈猫儿з 提交于 2020-08-20 07:54:10
这是一篇用python代码自动登录的脚本,大家可以参考,看能不能开发点其他东东... #!/usr/bin/env python #web client post of python network program import urllib,urllib2 def postNow(): url_login ='https://blog.51cto.com/login.php?' body = (('pwuser','hahazhu0634'), ('pwpwd','51ctoisgood'), ('cktime','31536000'),('jumpurl','https://blog.51cto.com'),('step','2')) opener=urllib2.build_opener() opener.addheaders = [('User-agent', 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)')] urllib2.install_opener(opener) req=urllib2.Request(url_login,urllib.urlencode(body)) u=urllib2.urlopen(req) data=u.read() outfile="51cto.html" fsock = open