两种方法模拟登陆

1.直接携带cookie

import re
import scrapy class RenrenSpider(scrapy.Spider):
name = 'renren'
allowed_domains = ['renren.com']
start_urls = ['http://renren.com/']
# 重写start_urls的处理方法,加上cookies
def start_requests(self):
cookies = '''anonymid=juzai6na-g0fmvf; depovince=GW; _r01_=1; ick_login=9de0dec9-4f94-42e0-819b-22df9e9adf66; ick=75ca63f4-c056-4af0-ba6e-7683bb07d04d;
jebecookies=747a7092-f53c-40ae-bc0b-90b3f9ab5e2d|||||; JSESSIONID=abcjUmG7wh1SragUBfEPw; _de=8B28AA93122391F898B641D1F469956B; p=9984be9e31957abbf89e6751ad2fd8f48;
first_login_flag=1; ln_uact=18781736136; ln_hurl=http://head.xiaonei.com/photos/0/0/men_main.gif; t=59071958da717542e6a80ffd0df189c38;
societyguester=59071958da717542e6a80ffd0df189c38; id=970578188; xnsid=a1ea20ee; ver=7.0; loginfrom=null;
jebe_key=ed626104-9dc0-45aa-961c-2cfea0e1935d%7C570ae1432b36360003bbd95b7fb6661a%7C1556356655118%7C1%7C1556356654129;
wp_fold=0; XNESSESSIONID=2d1bc0ef1740; vip=1'''
cookies = {i.split('=')[0]: i.split('=')[1] for i in cookies.split('; ')}
start_urls = ['http://www.renren.com/970578188/profile?v=info_timeline']
yield scrapy.Request(
start_urls[0],
callback=self.parse_detail,
cookies=cookies
) def parse_detail(self, response):
res = response.xpath("//div[@class='love-infobox']/p/text()").extract_first()
print(res)
# print(re.findall(r'单身', response.body.decode()))

2.找到发送post请求的url地址,带上信息,发送请求 。  scrapy.FormRequest

# 模拟github网登陆
class Renren1Spider(scrapy.Spider):
name = 'renren1'
allowed_domains = ['github.com']
start_urls = ['http://github.com/login']
# func 1
def parse(self, response):
authenticity_token = response.xpath("//input[@name='authenticity_token']/@value").extract_first()
utf8 = response.xpath("//input[@name='utf8']/@value").extract_first()
commit = response.xpath("//input[@name='commit']/@value").extract_first()
     # 所有的form data
post_data = dict(
login='tangpinggui',
password='***********',
authenticity_token=authenticity_token,
utf8=utf8,
commit=commit
)
yield scrapy.FormRequest(
url="https://github.com/session",
formdata=post_data,
callback=self.after_login
)
# func 2
def parse(self, response):
     # 只需要登陆名及密码,其它form data数据由FormRequest.from_response 找到
post_data = dict(
login='tangpinggui',
password='*********',
)
yield scrapy.FormRequest.from_response(
response, # 自动从response找到form表单
formdata=post_data,
callback=self.after_login
) def after_login(self, response):
res = response.xpath("//a[@class='btn btn-outline mt-2']/text()").extract_first()
print(res)
# 模拟人人网网登陆
class Renren1Spider(scrapy.Spider):
name = 'renren1'
allowed_domains = ['renren.com']
start_urls = ['http://renren.com']
"""
email: 18781736136
icode:
origURL: http://www.renren.com/970578188/profile?v=info_timeline
domain: renren.com
key_id: 1
captcha_type: web_login
password: 6af626fe325aa7fcea5e6ff3c541404d9104667d6d941a5c5c30390c2d5da8ad
rkey: 86cfb8063d4b47d05407cc549819f975
f:
"""
# func 1
def parse(self, response):
origURL = response.xpath("//input[@name='origURL']/@value").extract_first()
domain = 'renren.com'
key_id = response.xpath("//input[@name='key_id']/@value").extract_first()
captcha_type = response.xpath("//input[@name='captcha_type']/@value").extract_first()
# rkey = response.xpath("//input[@name='rkey']/@value").extract_first()
post_data = dict(
email='1********',
password='**********',
origURL=origURL,
domain=domain,
key_id=key_id,
captcha_type=captcha_type,
# rkey='', #不知道怎么获取,貌似不要也能登录
f=''
)
yield scrapy.FormRequest(
url="http://www.renren.com/PLogin.do",
formdata=post_data,
callback=self.after_login
)
# func 2
def parse(self, response):
post_data = dict(
email='1********',
password='**************',
)
yield scrapy.FormRequest.from_response(
response, # 自动从response找到form表单中
formdata=post_data,
callback=self.after_login
) def after_login(self, response):
print('start....')
with open('renren.html', 'w') as f:
f.write(response.body.decode())

scrpy-cookie的更多相关文章

  1. 超大 Cookie 拒绝服务攻击

    有没有想过,如果网站的 Cookie 特别多特别大,会发生什么情况? 不多说,马上来试验一下: for (i = 0; i < 20; i++) document.cookie = i + '= ...

  2. IE10、IE11 User-Agent 导致的 ASP.Net 网站无法写入Cookie 问题

    你是否遇到过当使用一个涉及到Cookie操作的网站或者管理系统时,IE 6.7.8.9下都跑的好好的,唯独到了IE10.11这些高版本浏览器就不行了?好吧,这个问题码农连续2天内遇到了2次.那么,我们 ...

  3. 解决cookie跨域访问

    一.前言 随着项目模块越来越多,很多模块现在都是独立部署.模块之间的交流有时可能会通过cookie来完成.比如说门户和应用,分别部署在不同的机器或者web容器中,假如用户登陆之后会在浏览器客户端写入c ...

  4. jquery插件的用法之cookie 插件

    一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...

  5. 一个诡异的COOKIE问题

    今天下午,发现本地的测试环境突然跑不动了,thinkphp直接跑到异常页面,按照正常的排错思路,直接看thinkphp的log 有一条 [ error ] [2]setcookie() expects ...

  6. [转载]Cookie/Session的机制与安全

    Cookie和Session是为了在无状态的HTTP协议之上维护会话状态,使得服务器可以知道当前是和哪个客户在打交道.本文来详细讨论Cookie和Session的实现机制,以及其中涉及的安全问题. 因 ...

  7. jquery.cookie的使用

    今天想到了要为自己的影像日记增加赞的功能,并且需要用到cookie. 记得原生的js操作cookie也不是很麻烦的,但似乎jquery更简单,不过相比原生js,需要额外引入2个文件,似乎又不是很好,但 ...

  8. 跨域问题,前端主动向后台发送cookie

    跨域是什么? 从一个域名的网页访问另一个域名的资源,就会出现跨域.只要协议.端口.域名有一个不同就会出现跨域 例如: 1.协议不同  http://www.baidu.com:80 和 https:/ ...

  9. 【流量劫持】沉默中的狂怒 —— Cookie 大喷发

    精简版:http://www.cnblogs.com/index-html/p/mitm-cookie-crack.html 前言 上一篇文章 讲解了如何借助前端技术,打造一个比 SSLStrip 更 ...

  10. 好好了解一下Cookie

    Cookie的诞生 由于HTTP协议是无状态的,而服务器端的业务必须是要有状态的.Cookie诞生的最初目的是为了存储web中的状态信息,以方便服务器端使用.比如判断用户是否是第一次访问网站.目前最新 ...

随机推荐

  1. MySQL 对分组后的同类数据进行拼接字符串

    MySQL 对分组后的同类数据进行拼接字符串 写后台方法时遇到个问题,需要将表内同一订单号的操作记录流水进行简单拼接输出,不想取出来再操作,找了个mysql的方法直接操作 //group_concat ...

  2. 请求转发和URL重定向的原理和区别

    一.请求转发和重定向是在java后台servlet中,由一个servlet跳转到另一个servlet/jsp要使用的技术 使用方法 请求转发  req.getResquestDispatcher(se ...

  3. ideal的maven工程启动时老是报错,提示web.xml里面的监听器找不到,但是实际又是存在的

    -X clean compile package -Dmaven.repo.local=D:\repository-pss -Dmaven.test.skip=true maven仓库地址

  4. JavaScript之更改闭包内的变量值

    var f = function( ) { var x = 1 function fo() { console.log( x++ ) }   return fo } var fn = f() fn() ...

  5. socks5服务器编写经验总结

    一.Socks5服务器实现设计 本Socks5服务器是之前做的一个项目中的一个小部分东西,该项目是一个可以实现多级转发代理网络通讯的项目,能够隐藏网络数据包的源IP地址和端口,能够为上网的用户提供安全 ...

  6. Android Studio学习NO.1 了解项目资源

    2018.3.1 12:40:51 阅读书籍:第一行代码 1. res目录 drawable 图片 mipmap 图标 values 字符串.样式.颜色 layout 布局 2. 引用(可在Andro ...

  7. 思科模拟器-DHCP配置

    一.如图做好以下拓扑图(下图我取消显示端口号) 二.配置最下面的四台上网终端为自动获取ip 三.配置中间的二层交换机:添加vlan,同时所有端口设为access类型并将其加入vlan中,以下以swit ...

  8. CAFFE在win10+VS2017下的安装笔记

    老版的caffe在BVLC的github上已经找不到,如果要想下载老版caffe可以下载微软的caffe版本:https://github.com/Microsoft/caffe 网上的大多安装caf ...

  9. 分布式事务(二)Java事务API(JTA)规范

    一.引子 既然出现了分布式场景(DTP模型), 大java也及时制定出一套规范来给各大应用服务器.数据库/mq等厂商使用,以方便管理互通--->JTA闪亮登场.JTA(Java Transact ...

  10. django中form页面刷新后自动提交的解决方案

    如果一个页面包含了form,同时这个form中的提交按钮是type=submit的input的时候,你刷新该页面,就会有弹窗提示是否重新提交表单,这个特性不胜其烦,常见解决方法有两个: 第一种是前端的 ...