- 博客(51)
- 资源 (3)
- 收藏
- 关注
原创 js技巧(4)
1.js逆向过程中常常会出现js混淆 我们需要使用反混淆的工具这是js混淆后的代码上面是反混淆的工具使用返回了一个数据接口 这个才是真的js数据2.SessionId出现这个字眼就是说cookie的值3.如果一个函数没有需要转跳那么直接复制全部 尽量还原原代码...
2021-05-28 14:20:17
148
原创 芝麻http和豌豆http使用
一、豌豆httpimport requeststargetUrl = "http://myip.ipip.net"api_url = 'api的网址'a = requests.get(api_url).texthttpProxyServer = str(a).strip()print(httpProxyServer)proxies = { "http": 'http://{}'.format(httpProxyServer), "https": 'http://{}'.
2021-05-27 21:58:36
1673
原创 seleium优选
在seleium里定位复杂的话可以用两种定位方式1.css_selector使用方法:根据路径来定位driver.find_element_by_css_selector('.p-name em')class属性用.id属性用#2.xpath同样是这个路径li.find_element_by_xpath('//div[@class="p-name"]/em').text...
2021-05-24 22:05:05
140
原创 数据分析matplotlib模块(牛刀小试)
加载模块from matplotlib import pyplot as plt创建画布plt.figure(figsize=(6, 4), dpi=100)figsize可以控制长宽dpi可以控制画布大小输入数据week = [1,2,3,4,5,6,7]n = [33,2,52,61,2,1,48]plt.plot(week,n)plt.plot()可以将两个数据合并 一个数据是序列 一个数据是值输出画布plt.show()...
2021-05-21 15:57:03
96
原创 js技巧(3)
js逆向中的RSA加密的话需要一个公钥来加密2.如果钥匙的地方或者加密的地方在一个函数内 那么把函数内的数据都取出来3.RSA需要获取公钥来进行加密 加密的过程中有需要公钥function text(pwd) {var e = new JSEncrypt();var k = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCjfeE0MIYsZes / HwV06 / kvRw34Hmhn9WPt0feLPp1PVqdqZz1 / xFvPPEAJ / lAvfqt5
2021-05-17 10:08:55
125
原创 js技巧(2)
如果需要解密的地方很难进行搜索但是有特殊符号 可以使用特殊符号进行搜索m: eb6c7c80779809148403384e8210c20d丨1620805157中间有一个特殊符号| 可以让他进行搜索2. requests如果在代码后面 删掉就可以了3. base64伪加密一般会是英文大写和小写4.5....
2021-05-14 15:19:08
73
原创 多线程中子线程正确传输
import pymongoimport threadingimport queueclient = pymongo.MongoClient(host='127.0.0.1', port=27017)db = client['xiaoye']['jf']class Producer(threading.Thread): def __init__(self, data_queue, *args,**kwargs): super(Producer, self).__i
2021-05-14 10:52:02
108
原创 js技巧(1)
设置函数第二行代码为断点就可以看到函数的参数函数里参数里如果是len 那调用函数是他的实参是数量比如:function _rds(len) { var retStr = ''; for (i = 0; i < len; i++) { retStr += $_chars.charAt(Math.floor(Math.random() * _chars_len)); } return retStr;}调用_rds(64)函数 就去除64位的随.
2021-05-11 12:03:47
86
原创 爬取今日头条搜索标题
# 加载模块import requestsfrom fake_useragent import UserAgentimport timeclass Sousuo(): def __init__(self, i, p): # 设置爬虫参数 self.url = 'https://www.toutiao.com/api/search/content/' # 传入url self.headers = { # 设置headers
2021-04-21 18:05:39
39303
5
原创 js字符串方法
创建字符串创建字符串也有两种第一种直接赋值var a = "123"第二种新建字符串方法var a = new String('value')第二种括号内可以放入值方法concatconcat:拼接var a = 'w';var b = 'd';var c = a.concat(b);console.log(c)输出结果为 wdindexofindexof:查找对应值的下标var a = 'wdawdwa';var b = a.indexOf('w',2) //第
2021-04-21 10:06:54
106
原创 js数组对象
1.创建数组第一种:直接写数组然后赋值var a = [1,2,3]第二种:用方法var a = new Array()第二种在new Array()的括号中只有一个参数的时候,这个参数的作用是长度在new Array()的括号中传入多个参数 这是参数的作用是数组内的数据数组的方法1.concat()concat是合并的作用var a = [1,2]var b = [3,4]var c = a.concat(b)console.log(c)2.push()push:在
2021-04-20 14:43:12
404
原创 js this方法
this谁调用this this就会指向谁看代码 f 调用了fn fn里的函数有this this指向最终调用的对象作用域的a,在f作用域里有a : 小白,而最终调用this是b b的作用域是全局 全局里有一开始赋值的a 所以最终结果是小黑 而不是小白var a = '小黑';var f = { a:'小白', fn:function(){ console.log(this.a); }}var b = f.fn;b();在上面我们可以看到在最终调用的是b而b是属于全局作用域 而
2021-04-20 11:41:43
71
原创 js对象
this关键字谁调用它它就输出谁 如果没有对象那么就输出windowvar s = { 'wowo':this, }console.log(s)new创建新的对象 可以进行特殊操作var rr = new Object()rr.name = 'cxy'console.log(news)如果是正常对象的话只能字典模式但是new可以直接使用rr.name = 'cxy’来进行添加...
2021-04-06 13:02:56
47
原创 js函数
自定义函数functionfunction aa(){ console.log('wws') }调用函数function aa(){ console.log('wws') }aa()在字典中调用函数并输出字典function aa(){ console.log('wws') }var s = { 'tuzi': aa()}conself.log(s.tuzi)调用函数是要加上括号...
2021-04-06 12:46:09
198
原创 scrapy集合mongo进行多条数据采集
一、爬虫文件import scrapyimport sysclass MgcsSpider(scrapy.Spider): name = 'mgcs' allowed_domains = ['meituan.com'] start_urls = ['https://i.waimai.meituan.com/openh5/homepage/poilist?'] sz =0 def parse(self, response): cookies =
2021-04-05 16:44:18
238
原创 在scrapy中params无处安放???
在scrapy中post请求并没有params这一项但是可以放入data一起递给formdata例子:url = 'https://i.waimai.meituan.com/openh5/homepage/poilist?_=1617599276031&X-FOR-WITH=aOz9oQArI5qgENaNLqbZUsSueNStDs68OwuGdAWGQL872kDC5t6e3g89MWKANAKICAVATGoJcrGz0lf9H74EEtfCzyWAXetZ1HNpfOjg95T4ZvhQ
2021-04-05 14:05:34
1270
1
原创 在scrapy集合selenium模拟登陆获取cookie
from fake_useragent import UserAgentfrom selenium import webdriverfrom scrapy.http.response.html import HtmlResponseimport timeclass seleniumMiddleware: driver = webdriver.Chrome() def process_request(self, request, spider): self.dr
2021-04-02 17:14:27
321
6
原创 js对话框
对话框1.定义对话框函数function comfirm_fun(){ }<body><button type="button" onclick="comfirm_fun()">出售装备</button>2.在函数里面添加选择确认或取消的的按钮function comfirm_fun(){ var rs = confirm('请确认是否出售装备'); }<body> <button type="button" oncli
2021-04-02 16:25:29
129
原创 js循环
数字计算:var sum=0;for(var a=1;a<=10000;a++){ console.log(a); console.log(a++); sum = sum+a;}console.log(sum)a++:递增 每次循环后再加1遍历数组(列表)var a = ['1','2','3']for(var i=0;a.length;i++){ console.log(a[i])}通过获取数组的长度来进行下标递增获取数组里的每个数据...
2021-04-02 13:59:19
323
原创 js条件判断
条件判断不能重复 只能让一个条件满足如:var age = 30if(age>=18){;}else if(age>=0){;}这样就都会被满足所以我们一般使用&&进行修改条件如:var age = 30if(age>=18){;}else if(18>age && age>=0){;}这样在age大于18时只会被满足一条就是age>=18练习:var sg=parseFloat(prompt(('请输入你的身高'
2021-04-01 13:48:15
312
原创 session心得
一.手机号验证码使用手机号进行正常登入,登录后搜索手机号的验证码进行搜索我们的验证码是4474那么就搜索4474 搜索后发现有一条数据接口 那这个数据接口就是我们session登录的路径了在然后携带参数登入import requestsfrom lxml import etreesession = requests.session()# 目标urlurl = 'https://accounts.douban.com/j/mobile/login/verify_phone_code'y
2021-03-31 15:45:16
241
原创 pymongo
pymongo序:启动import pymongoclient = pymongo.MongoClient(host='127.0.0.1', port=27017)db = client['xiaoye']['biao']xiaoye:数据库名biao:表名(集合名)db:可进行指定位置操作的变量(如:db = client[‘xiaoye’][‘biao’] 指定的位置是xiaoye数据库里的biao表)pymongo新增新增多条数据:db.insert_many([{'fangz
2021-03-30 14:18:23
350
原创 代理ip
1.不要适用seleium2.获取代理ip时一定要注意协议 如:http的网址就用http的代理ip,https的网址就要https的代理ip3.注意整理ip信息时 协议要使用大写HTTP4.在使用requests后再加上requests.adapters.DEFAULT_RETRIES = 55.ip的格式是字典而且只能传一个可以获取ip后使用遍历...
2021-03-23 10:01:21
106
原创 关于爬虫报错:requests.exceptions.ProxyError(最正确的办法)
你的代理ip输入的是小写的http或者https而不是大写的如:{’HTTP‘:’117.94.236.124:4257‘} 这样才行
2021-03-17 22:18:27
1013
4
原创 scrapy-redis
步骤一正常使用scrapy爬取数据步骤二修改爬虫文件1.加载模块from scrapy_redis.spiders import RedisSpider2.继承模块的类class DangdangSpider(RedisSpider):3.start_urls替换redis_key(redis_key里面输入py名)# start_urls = ['http://book.dangdang.com']redis_key = 'dangdang'修改settings1.放入参数
2021-03-11 17:21:42
78
原创 爬虫知识储备(2)
1.xpath中的./和.//的关系在每个div[@class=“level_one”]中都会有dl和div[@class=“con”]div[@class=“con”]下面也有dl如果写xpath时 使用的是.//dl[1]/dt[1]//text()那么获取来的数据 就会是 第一个dl里匹配到的数据特色书单 以及在div[@class=“con”]下面的dl里也会匹配到童书的文本 在这里我们看出来 .//会把所有符合匹配要求的全部取出来 而./却不一样他只会把第一个dl里匹配到的数据特色书单
2021-03-11 15:29:38
185
原创 爬虫知识储备(1)
知识存储1.数据接口中的data数据处理我们可以看出来这不是一个简单数据 而是像json一样一节一节的我们平时处理data带入post参数都是data = { 'startIndex': '1', 'sortId': '0', 'multiFilterIds': '', }但是出现{channelCode: [“fixed_disc”], pageSize: 30, pageNum: 1, stock: []}这种情况 我们就的使用这种方法了data = '{"channelC
2021-02-26 15:03:56
344
原创 selenium
selenium的显示等待与隐示等待1.显示等待WebDriverWait(driver, 1000).until(EC.url_contains(www.baidu.com)) # 等待网页加载成功后就取消多余的等待时间WebDriverWait(driver,100).until(EC.presence_of_all_elements_located((By.ID, 'kw')))# 等待网页标签加载成功(若是网页标签在网页下面或看不见的地方会报错)# 显示等待的坐标必须使用By.**
2021-02-22 22:02:52
97
原创 报错
报错库存1.http.client.RemoteDisconnected: Remote end closed connection without responseua出错 使用fake_useragent
2021-02-08 08:24:55
188
原创 使用scrapy集成selenium爬取简书专题全部内容
1.载入selenium对应的模块以及time模块2.使用selenium登入简书url3.等待显示更多刷新出来4.重复点击显示更多15.获取全部专题内容并结束普通的click()点击不了显示更多 因为显示更多在页面的下面还在隐藏着 需要滑动页面才能找到 这里我们使用execute_script 可以直接点击不需要滑动页面 ↩︎...
2021-02-04 16:45:10
162
原创 middlewares中间件设置
middlewares 中间件里设置ua伪装1.使用fake_useragent模块2.在middlewares里设置新的中间件3.在新的中间件里重置process_request函数4.在process_request函数里使用fake_useragent模块5.在settings开启之前新的中间件middlewares 中间件里设置ip1.在豌豆http网站里获取IPjson格式2.复制api网址并复制里面的内容3.创建新的中间件并重置process_request函数4.
2021-02-04 15:15:10
837
原创 scrapy模拟登入
使用scrapy模拟登入第一种方法从数据接口获取cookie重新定义一个start_requests函数把cookie整理成字典格式传入模拟登入代码的cookies参数里第二种方法 以post形式去登入1.查看网页登入失败后网页是否从login变成session --是2.获取session数据接口里的data3.查看data里是否有变数 --有4.去网页中获取data里的变数(数据结构是固定的一会就被会换 ,而网页直接请求无论怎么变都可以)5.使用formrequest方法
2021-02-03 15:00:14
208
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人