1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
|
<?php /** * 功能: 模拟新浪微博登陆 * 用途: 模拟用户登陆, 以便进行后续操作, 比如自动化的控制自己的新浪app刷新某些数据 * 注意事项: * 1. 需要安装nodejs * 2. 需要下载新浪的加密js文件, 请到新浪登陆页查看网络请求自己下载最新版本(我当时用的: http://js.t.sinajs.cn/t35/miniblog/static/js/sso.js?version=e482ef2bbdaa8bc2) * 3. 对新浪加密js文件进行修改, 以便让nodejs可以运行它 * 1) 在文件前面增加下面内容 var window = { location : { hash : '', host : 'weibo.com', hostname : 'weibo.com', href : 'http://weibo.com/', pathname : '/', port : '', protocol : 'http:', search : '' }, navigator : { appCodeName : 'Mozilla', appName : 'Netscape', appVersion : '5.0 (Macintosh)', buildID : '20120713134347', cookieEnabled : true, doNotTrack : 'unspecified', language : 'en-US' } }; var location = window.location; var navigator = window.navigator; * 2) 在文件后面增加下面内容 var argv = process.argv.splice(2); var pubkey = argv[0], servertime = argv[1], nonce = argv[2], password = argv[3]; var RSAKey = new sinaSSOEncoder.RSAKey(); RSAKey.setPublic(pubkey, '10001'); password = RSAKey.encrypt([servertime, nonce].join("\t") + "\n" + password); console.log(password); process.exit(); * 4. 修改encode_password函数中的nodejs程序路径和修改后的新浪js文件路径 * 5. 修改用户名密码 * author: selfimpr * blog: http://blog.csdn.net/lgg201 * mail: lgg860911@yahoo.com.cn */ define( 'REQUEST_METHOD_GET' , 'GET' ); define( 'REQUEST_METHOD_POST' , 'POST' ); define( 'REQUEST_METHOD_HEAD' , 'HEAD' ); define( 'COOKIE_FILE' , '/tmp/sina.login.cookie' ); function curl_switch_method( $curl , $method ) { switch ( $method ) { case REQUEST_METHOD_POST: curl_setopt( $curl , CURLOPT_POST, TRUE); break ; case REQUEST_METHOD_HEAD: curl_setopt( $curl , CURLOPT_NOBODY, TRUE); break ; case REQUEST_METHOD_GET: default : curl_setopt( $curl , CURLOPT_HTTPGET, TRUE); break ; } } function curl_set_headers( $curl , $headers ) { if ( empty ( $headers ) ) return ; if ( is_string ( $headers ) ) $headers = explode ( "\r\n" , $headers ); #类型修复 foreach ( $headers as & $header ) if ( is_array ( $header ) ) $header = sprintf( '%s: %s' , $header [0], $header [1]); curl_setopt( $curl , CURLOPT_HTTPHEADER, $headers ); } function curl_set_datas( $curl , $datas ) { if ( empty ( $datas ) ) return ; curl_setopt( $curl , CURLOPT_POSTFIELDS, $datas ); } function curl_request( $url , $method = REQUEST_METHOD_GET, $datas = NULL, $headers = NULL) { static $curl ; if ( ! $curl ) $curl = curl_init(); curl_switch_method( $curl , $method ); curl_setopt( $curl , CURLOPT_URL, $url ); curl_setopt( $curl , CURLOPT_RETURNTRANSFER, TRUE); curl_setopt( $curl , CURLOPT_FOLLOWLOCATION, TRUE); curl_setopt( $curl , CURLOPT_AUTOREFERER, TRUE); curl_setopt( $curl , CURLOPT_COOKIEJAR, COOKIE_FILE); curl_setopt( $curl , CURLOPT_COOKIESESSION, TRUE); if ( $datas ) curl_set_datas( $curl , $datas ); if ( $headers ) curl_set_headers( $curl , $headers ); $response = curl_exec( $curl ); if ( $errno = curl_errno( $curl ) ) { error_log (sprintf( "%10d\t%s\n" , $errno , curl_error( $curl )), 3, 'php://stderr' ); return FALSE; } return $response ; } function get_js_timestamp() { return time() * 1000 + rand(0, 999); } function http_build_query_no_encode( $datas ) { $r = array (); foreach ( $datas as $k => $v ) $r [] = $k . '=' . $v ; return implode( '&' , $r ); } function makeUrl( $url , $info , $encode = TRUE) { if ( ! is_array ( $info ) || empty ( $info ) ) return $url ; $components = parse_url ( $url ); if ( array_key_exists ( 'query' , $components ) ) $query = parse_str ( $components [ 'query' ]); else $query = array (); if ( is_string ( $info ) ) $info = parse_str ( $info ); $query = array_merge ( $query , $info ); $query = $encode ? http_build_query( $query ) : http_build_query_no_encode( $query ); $components [ 'scheme' ] = array_key_exists ( 'scheme' , $components ) ? $components [ 'scheme' ] . '://' : '' ; $components [ 'user' ] = array_key_exists ( 'user' , $components ) ? $components [ 'user' ] . ':' . $components [HTTP_URL_PASS] . '@' : '' ; $components [ 'host' ] = array_key_exists ( 'host' , $components ) ? $components [ 'host' ] : '' ; $components [ 'port' ] = array_key_exists ( 'port' , $components ) ? ':' . $components [ 'port' ] : '' ; $components [ 'path' ] = array_key_exists ( 'path' , $components ) ? '/' . ltrim( $components [ 'path' ], '/' ) : '' ; $components [ 'query' ] = $query ? '?' . $query : '' ; $components [ 'fragment' ] = array_key_exists ( 'fragment' , $components ) ? '#' . $components [ 'fragment' ] : '' ; return sprintf( '%s%s%s%s%s%s%s' , $components [ 'scheme' ], $components [ 'user' ], $components [ 'host' ], $components [ 'port' ], $components [ 'path' ], $components [ 'query' ], $components [ 'fragment' ]); } function encode_username( $username ) { return base64_encode (urlencode( $username )); } function encode_password( $pub_key , $password , $servertime , $nonce ) { #这里是要用nodejs执行新浪的js文件 $response = `/usr/local/node.js-0.8.8/bin/node sina.js "$pub_key" "$servertime" "$nonce" "$password" `; return substr ( $response , 0, strlen ( $response ) - 1); } function main_page() { return curl_request( 'weibo.com' ); } function prepare_login_info() { $time = get_js_timestamp(); $url = makeUrl( 'http://login.sina.com.cn/sso/prelogin.php' , array ( 'entry' => 'sso' , 'callback' => 'sinaSSOController.preloginCallBack' , 'su' => encode_username( 'undefined' ), 'rsakt' => 'mod' , 'client' => 'ssologin.js(v1.4.2)' , '_' => $time , ), FALSE); $response = curl_request( $url ); $length = strlen ( $response ); $left = 0; $right = $length - 1; while ( $left < $length ) if ( $response [ $left ] == '{' ) break ; else $left ++; while ( $right > 0 ) if ( $response [ $right ] == '}' ) break ; else $right --; $response = substr ( $response , $left , $right - $left + 1); return array_merge (json_decode( $response , TRUE), array ( 'preloginTime' => max(get_js_timestamp() - $time , 100), )); } function login( $info , $username , $password ) { $feedbackurl = makeUrl( 'http://weibo.com/ajaxlogin.php' , array ( 'framelogin' => 1, 'callback' => 'parent.sinaSSOController.feedBackUrlCallBack' , )); $datas = array ( 'encoding' => 'UTF-8' , 'entry' => 'weibo' , 'from' => '' , 'gateway' => 1, 'nonce' => $info [ 'nonce' ], 'prelt' => $info [ 'preloginTime' ], 'pwencode' => 'rsa2' , 'returntype' => 'META' , 'rsakv' => $info [ 'rsakv' ], 'savestate' => 7, 'servertime' => $info [ 'servertime' ], 'service' => 'miniblog' , 'sp' => encode_password( $info [ 'pubkey' ], $password , $info [ 'servertime' ], $info [ 'nonce' ]), 'ssosimplelogin' => 1, 'su' => encode_username( $username ), 'url' => $feedbackurl , 'useticket' => 1, 'vsnf' => 1, ); $url = makeUrl( 'http://login.sina.com.cn/sso/login.php' , array ( 'client' => 'ssologin.js(v1.4.2)' , ), FALSE); $response = curl_request( $url , REQUEST_METHOD_POST, $datas ); $sign = 'location.replace(\'' ; $response = substr ( $response , strpos ( $response , $sign ) + strlen ( $sign )); $location = substr ( $response , 0, strpos ( $response , '\'' )); $response = curl_request( $location ); $length = strlen ( $response ); $left = 0; $right = $length - 1; while ( $left < $length ) if ( $response [ $left ] == '{' ) break ; else $left ++; while ( $right > 0 ) if ( $response [ $right ] == '}' ) break ; else $right --; $response = substr ( $response , $left , $right - $left + 1); return json_decode( $response , true); } $info = prepare_login_info(); $info = login( $info , '用户名' , '密码' ); echo curl_request( 'http://weibo.com/u/' . $info [ 'userinfo' ][ 'uniqueid' ] . $info [ 'userinfo' ][ 'userdomain' ]); |
- 浏览: 1599188 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1585)
- Http Web (18)
- Java (194)
- 操作系统 (2)
- 算法 (30)
- 计算机 (45)
- 程序 (2)
- 性能 (50)
- php (45)
- 测试 (12)
- 服务器 (14)
- Linux (42)
- 数据库 (14)
- 管理 (9)
- 网络 (3)
- 架构 (83)
- 安全 (2)
- 数据挖掘 (16)
- 分析 (9)
- 数据结构 (2)
- 互联网 (6)
- 网络安全 (1)
- 框架 (9)
- 视频 (2)
- 计算机,SEO (3)
- 搜索引擎 (31)
- SEO (18)
- UML (1)
- 工具使用 (2)
- Maven (41)
- 其他 (7)
- 面向对象 (5)
- 反射 (1)
- 设计模式 (6)
- 内存数据库 (2)
- NoSql (9)
- 缓存 (7)
- shell (9)
- IQ (1)
- 源码 (1)
- Js (23)
- HttpClient (2)
- excel (1)
- Spring (7)
- 调试 (4)
- mysql (18)
- Ajax (3)
- JQuery (9)
- Comet (1)
- 英文 (1)
- C# (1)
- HTML5 (3)
- Socket (2)
- 养生 (1)
- 原理 (2)
- 倒排索引 (4)
- 海量数据处理 (1)
- C (2)
- Git (59)
- SQL (3)
- LAMP (1)
- 优化 (2)
- Mongodb (20)
- JMS (1)
- Json (15)
- 定位 (2)
- Google地图 (1)
- memcached (10)
- 压测 (4)
- php.性能优化 (1)
- 励志 (1)
- Python (7)
- 排序 (3)
- 数学 (3)
- 投票算法 (2)
- 学习 (1)
- 跨站攻击 (1)
- 前端 (8)
- SuperFish (1)
- CSS (2)
- 评论挖掘分析 (1)
- Google (13)
- 关键词分析 (1)
- 地图 (1)
- Gzip (1)
- 压缩 (1)
- 爬虫 (13)
- 流量统计 (1)
- 采集 (1)
- 日志分析 (2)
- 浏览器兼容 (1)
- 图片搜索引擎技术 (2)
- 空间 (1)
- 用户体验 (7)
- 免费空间 (1)
- 社交 (2)
- 图片处理 (2)
- 前端工具 (1)
- 商业 (3)
- 淘宝 (3)
- 站内搜索 (1)
- 网站收藏 (1)
- 理论 (1)
- 数据仓库 (2)
- 抓包 (1)
- Hadoop (105)
- 大数据 (6)
- Lucene (34)
- Solr (31)
- Drupal (1)
- 集群 (2)
- Lu (2)
- Mac (4)
- 索引 (9)
- Session共享 (1)
- sorl (10)
- JVM (9)
- 编码 (1)
- taobao (14)
- TCP/IP (4)
- 你可能會感興趣 (3)
- 幽默笑话 (7)
- 服务器整合 (1)
- Nginx (9)
- SorlCloud (4)
- 分佈式搜索 (1)
- ElasticSearch (30)
- 網絡安全 (1)
- MapReduce (8)
- 相似度 (1)
- 數學 (1)
- Session (3)
- 依賴注入 (11)
- Nutch (8)
- 云计算 (6)
- 虚拟化 (3)
- 财务自由 (1)
- 开源 (23)
- Guice (1)
- 推荐系统 (2)
- 人工智能 (1)
- 环境 (2)
- Ucenter (1)
- Memcached-session-manager (1)
- Storm (54)
- wine (1)
- Ubuntu (23)
- Hbase (44)
- Google App Engine (1)
- 短信 (2)
- 矩阵 (1)
- MetaQ (34)
- GitHub &Git &私/公有库 (8)
- Zookeeper (28)
- Exception (24)
- 商务 (1)
- drcp (1)
- 加密&解密 (1)
- 代码自动生成 (1)
- rapid-framework (1)
- 二次开发 (1)
- Facebook (3)
- EhCache (1)
- OceanBase (1)
- Netlog (1)
- 大数据量 (2)
- 分布式 (3)
- 事物 (2)
- 事务 (2)
- JPA (2)
- 通讯 (1)
- math (1)
- Setting.xml (3)
- 络驱动器 (1)
- 挂载 (1)
- 代理 (0)
- 日本語の (1)
- 花生壳 (7)
- Windows (1)
- AWS (2)
- RPC (11)
- jar (2)
- 金融 (1)
- MongDB (2)
- Cygwin (1)
- Distribute (1)
- Cache (1)
- Gora (1)
- Spark (31)
- 内存计算 (1)
- Pig (2)
- Hive (21)
- Mahout (17)
- 机器学习 (34)
- Sqoop (1)
- ssh (1)
- Jstack (2)
- Business (1)
- MapReduce.Hadoop (1)
- monitor (1)
- Vi (1)
- 高并发 (6)
- 海量数据 (2)
- Yslow (4)
- Slf4j (1)
- Log4j (1)
- Unix (3)
- twitter (2)
- yotube (0)
- Map-Reduce (2)
- Streaming (1)
- VMware (1)
- 物联网 (1)
- YUI (1)
- LazyLoad (1)
- RocketMQ (17)
- WiKi (1)
- MQ (1)
- RabbitMQ (2)
- kafka (3)
- SSO (8)
- 单点登录 (2)
- Hash (4)
- Redis (20)
- Memcache (2)
- Jmeter (1)
- Tsung (1)
- ZeroMQ (1)
- 通信 (7)
- 开源日志分析 (1)
- HDFS (1)
- zero-copy (1)
- Zero Copy (1)
- Weka (1)
- I/O (1)
- NIO (13)
- 锁 (3)
- 创业 (11)
- 线程池 (1)
- 投资 (3)
- 池化技术 (4)
- 集合 (1)
- Mina (1)
- JSMVC (1)
- Powerdesigner (1)
- thrift (6)
- 性能,架构 (0)
- Web (3)
- Enum (1)
- Spring MVC (15)
- 拦截器 (1)
- Web前端 (1)
- 多线程 (1)
- Jetty (1)
- emacs (1)
- Cookie (2)
- 工具 (1)
- 分布式消息队列 (1)
- 项目管理 (2)
- github (21)
- 网盘 (1)
- 仓库 (3)
- Dropbox (2)
- Tsar (1)
- 监控 (3)
- Argo (2)
- Atmosphere (1)
- WebSocket (5)
- Node.js (6)
- Kraken (1)
- Cassandra (3)
- Voldemort (1)
- VoltDB (2)
- Netflix (2)
- Hystrix (1)
- 心理 (1)
- 用户分析 (1)
- 用户行为分析 (1)
- JFinal (1)
- J2EE (1)
- Lua (2)
- Velocity (1)
- Tomcat (3)
- 负载均衡 (1)
- Rest (2)
- SerfJ (1)
- Rest.li (1)
- KrakenJS (1)
- Web框架 (1)
- Jsp (2)
- 布局 (2)
- NowJs (1)
- WebSoket (1)
- MRUnit (1)
- CouchDB (1)
- Hiibari (1)
- Tiger (1)
- Ebot (1)
- 分布式爬虫 (1)
- Sphinx (1)
- Luke (1)
- Solandra (1)
- 搜素引擎 (1)
- mysqlcft (1)
- IndexTank (1)
- Erlang (1)
- BeansDB (3)
- Bitcask (2)
- Riak (2)
- Bitbucket (4)
- Bitbuket (1)
- Tokyo Cabinet (2)
- TokyoCabinet (2)
- Tokyokyrant (1)
- Tokyo Tyrant (1)
- Memcached协议 (1)
- Jcrop (1)
- Thead (1)
- 详设 (1)
- 问答 (2)
- ROM (1)
- 计算 (1)
- epoll (2)
- libevent (1)
- BTrace (3)
- cpu (2)
- mem (1)
- Java模板引擎 (1)
- 有趣 (1)
- Htools (1)
- linu (1)
- node (3)
- 虚拟主机 (1)
- 闭包 (1)
- 线程 (1)
- 阻塞 (1)
- LMAX (2)
- Jdon (1)
- 乐观锁 (1)
- Disruptor (9)
- 并发 (6)
- 为共享 (1)
- volatile (1)
- 伪共享 (1)
- Ringbuffer (5)
- i18n (2)
- rsync (1)
- 部署 (1)
- 压力测试 (1)
- ORM (2)
- N+1 (1)
- Http (1)
- web开发脚手架 (1)
- Mybatis (1)
- 国际化 (2)
- Spring data (1)
- R (4)
- 网络爬虫 (1)
- 条形码 (1)
- 等比例缩放 (1)
- java,面向接口 (1)
- 编程规范 (1)
- CAP (1)
- 论文 (1)
- 大数据处理 (1)
- Controller (3)
- CDN (2)
- 程序员 (1)
- Spring Boot (3)
- sar (1)
- 博弈论 (1)
- 经济 (1)
- Scrapy (1)
- Twistedm (1)
- cron (1)
- quartz (1)
- Debug (1)
- AVO (1)
- 跨语言 (1)
- 中间服务 (2)
- Dubbo (4)
- Yarn (1)
- Spring OSGI (1)
- bundle (1)
- OSGI (1)
- Spring-Boot (1)
- CA证书 (1)
- SSL (1)
- CAS (7)
- FusionCharts (5)
- 存储过程 (3)
- 日志 (2)
- OOP (2)
- CentOS (5)
- JSONP (2)
- 跨域 (5)
- P3P (1)
- Java Cas (1)
- CentOS 6.5 Released – Installation Guide with Screenshots (1)
- Android (1)
- 队列 (2)
- Multitail (1)
- Maout (1)
- nohup (1)
- AOP (1)
- 长连接 (3)
- 轮循 (2)
- 聊天室 (1)
- Zeus (1)
- LSM-Tree (1)
- Slope One (1)
- 协同过滤 (1)
- 服务中间件 (1)
- KeyMeans (1)
- Bitmap (1)
- 实时统计 (1)
- B-Tree+ (1)
- PageRank (1)
- 性能分析 (1)
- 性能测试 (1)
- CDH (10)
- 迭代计算 (1)
- Jubatus (1)
- Hadoop家族 (8)
- Cloudera (2)
- RHadoop (1)
- 广告定价 (1)
- 广告系统 (9)
- 广告系统,架构 (1)
- Tag推荐算法 (1)
- 相似度算法 (1)
- 页面重构 (2)
- 高性能 (6)
- Maven3 (3)
- Gradle (11)
- Apache (1)
- Java并发 (1)
- Java多进程 (1)
- Rails (1)
- Ruby (3)
- 系统架构 (1)
- 运维 (36)
- 网页设计 (1)
- TFS (0)
- 推荐引擎 (0)
- Tag提取算法 (1)
- 概率统计 (1)
- 自然语言处理 (2)
- 分词 (1)
- Ruby.Python (1)
- 语义相似度 (0)
- Chukwa (0)
- 日志收集系统 (0)
- Data Mining (4)
- 开放Api (1)
- Scala (28)
- Ganglia (2)
- mmap (1)
- 贝叶斯分类 (1)
- 运营 (1)
- Mdrill (1)
- Lambda (2)
- Netty (5)
- Java8 (1)
- Solr4 (1)
- Akka (12)
- 计算广告 (2)
- 聊天系统 (1)
- 服务发现 (1)
- 统计指标 (1)
- NLP (1)
- 深度学习 (0)
最新评论
-
wahahachuang5:
web实时推送技术使用越来越广泛,但是自己开发又太麻烦了,我觉 ...
使用 HTML5 WebSocket 构建实时 Web 应用 -
秦时明月黑:
Jetty 服务器架构分析 -
chenghaitao111111:
楼主什么时候把gecko源码分析一下呢,期待
MetaQ技术内幕——源码分析(转) -
qqggcc:
为什么还要写代码啊,如果能做到不写代码就把功能实现就好了
快速构建--Spring-Boot (quote) -
yongdi2:
好厉害!求打包代码
Hadoop日志文件分析系统
发表评论
-
ubuntu13.10安装apache+svn+mysql+jdk+tomcat+php开发环境
2014-05-09 20:25 1000系统:Ubuntu 13.10 需要安装软件版本: ap ... -
ubuntu12.04 卸载和安装mysql
2014-02-16 11:20 865卸载mysql 第一步 -
Ubuntu 12.04 搭建php开发环境
2014-02-16 11:21 888安装MySQL sudo apt-get inst ... -
Ucenter for java api
2013-10-31 09:53 612http://code.google.com/ ... -
PHP中文高速分词的原理和源码
2013-09-28 10:38 1240一、正向最大匹配算 ... -
免费PHP空间整理
2013-09-27 09:44 8621.http://www.000webhost.com ... -
PHP API 框架开发的学习
2013-09-22 08:54 1015基于互联网的应用正变得越来越普及,在这个过程中,有更多 ... -
PHP采集类-Snoopy.class.php
2013-09-22 08:54 1209Snoopy是一个php采 ... -
记录蜘蛛爬行历史--PHP版
2013-09-04 12:31 976<? function get_naps_bot ... -
使用Google Analytics来统计手机网站的流量
2013-09-21 14:35 1102<?php class GoogleAnlayti ... -
使用Google Analytics跟踪搜索引擎的抓取记录
2013-09-21 14:35 1261<?php /* * Name:Tracki ... -
使用Gzip压缩网页
2013-09-21 14:34 1440gzip是GNU zip的缩写,它是一个GNU自由软件 ... -
Mongodb的常用操作
2013-08-31 17:53 593参看手册,php官方的http://us2.php.net ... -
memcached 、php环境配置和分析
2013-08-30 10:03 895版本:memcached-1.2.1-win3 ... -
JSON在PHP中的应用
2013-09-02 09:42 806互联网的今天,AJAX已经不是什么陌生的词汇了。说起AJA ... -
常用的PHP类库
2013-09-02 09:42 887下面是一些非常有用的PHP类库,相信一定可以为你的WEB开 ... -
获取ip地理信息
2013-09-19 11:52 1119第一种是利用纯真ip数据库,这个可以在网上找到很多,缺点是 ... -
了解php底层机制
2013-08-29 10:04 980作为一门动态语言,php是如何实现的,其底层机制如何,具有 ... -
Mongodb for PHP数据操作
2013-08-29 10:04 1170Mongodb的常用操作 参看手册,php官方的http ... -
PHP的底层工作原理
2013-08-28 08:52 799PHP底层工作原理 图1 php结构 从图上可以看出 ...
相关推荐
模拟新浪微博桌面客户端应用自动授权功能,为写应用打开第一步锁。自动获取CODE并授权于应用。
在IT行业中,模拟登录是一种常见的技术,特别是在网络爬虫或者自动化测试中,它允许程序以用户的视角访问网站并执行特定操作。...通过这种方式,你可以编写自动化脚本,实现自动登录和浏览等功能。
在本文中,我们将深入探讨如何使用Java来模拟登录新浪微博这一话题。模拟登录是网络爬虫或自动化测试中常见的技术,它允许程序以用户的身份与网站交互。对于Java开发者来说,理解这一过程对于构建自动化工具或者数据...
综上所述,开发一个模拟新浪微博“随便看看”的安卓程序,需要掌握Android应用的基础架构、网络通信、UI设计、数据缓存、权限管理、登录授权以及测试调试等多个方面的技能。这个项目是学习和提升安卓开发能力的好...
测试的方法是使用QTP工具对新浪微博进行自动化测试,模拟用户的操作,记录用户的行为,并将其转换为测试脚本。 四、测试过程 测试过程可以分为启动QTP、配置录制项、输入登录数据、写微博测试和发送微博五个步骤。...
以上就是使用Python 3.7的`requests`库模拟新浪微博登录的概述和实现过程。实际应用中,你还需要处理更多的细节,比如错误处理、验证码的处理(如果有的话)以及网络异常等。确保始终遵循最佳实践,以保证代码的安全...
在本文中,我们将深入探讨如何使用Java来模拟登录新浪微博,特别是在其改版后增加了复杂性的背景下。我们将不依赖新浪提供的官方API,而是通过模拟浏览器的行为,实现自动化登录和交互。 首先,我们需要理解模拟...
今天我们将聚焦于“新浪微博2模拟登陆”这一主题,学习如何通过编程方式模拟登录并获取AccessToken,以便进行自动化操作或者数据分析。 首先,我们需要了解什么是模拟登陆。模拟登陆是指通过编程代码来模拟用户在...
本教程将详细讲解如何利用 Selenium 模拟登录新浪微博,包括必要的环境配置、关键代码实现以及可能遇到的问题。 首先,我们需要准备的工具有:Python 编程语言、Selenium 库、WebDriver(火狐驱动或 PhantomJS 驱动...
总之,实现Android WebView的新浪微博自动登录涉及WebView的初始化、JavaScript注入、Cookie管理以及登录状态的持久化。这个过程需要对Android开发、网络请求、以及可能的安全问题有深入理解。通过以上步骤,你可以...
在“新浪微博自动化测试”这个案例中,你可能需要编写脚本来模拟以下操作: 1. 打开微博首页 2. 登录微博账号 3. 检查登录状态 4. 浏览个人主页 5. 发布一条新的微博 6. 查看发布的微博是否显示正确 7. 退出登录 ...
在本资源中,我们主要探讨的是如何利用Python编程语言实现一个针对新浪微博的网络爬虫,目的是抓取微博数据,包括微博的文字内容、图片以及视频。爬虫是数据挖掘的重要工具,它能自动化地从互联网上收集信息,对于...
程序通过模拟用户在新浪微博平台的浏览行为,自动模拟登录并访问目标用户的主页或特定微博页面,然后抓取所需的信息。 使用这个爬虫程序,你可以轻松地获取新浪微博上的用户数据、微博内容,进行社交网络分析、舆情...
在信息技术领域,模拟登录是一种常见的技术手段,它允许开发者通过编程方式自动登录网站并执行一些操作,例如抓取数据。本主题聚焦于使用Java实现对新浪微博的模拟登录,这对于数据分析、信息抓取或自动化测试等应用...
Java模拟新浪和腾迅自动登录并发送微博(2013年3月更新可用)
这个“腾讯新浪微博模拟登录最新源码(java版)”提供了一种使用Java编程语言实现这一功能的方法。下面将详细介绍这个源码可能涉及的关键知识点。 1. **HTTP协议与网络请求**:模拟登录首先需要理解HTTP协议,包括...
**Python-爬取新浪微博信息** 在信息技术领域,网络爬虫是一种自动提取网页数据的程序,它们可以帮助我们收集、分析大量的互联网信息。在这个项目中,我们将专注于使用Python来爬取新浪微博的数据,尤其是账户下的...
然而,许多网站为了保护用户隐私和防止恶意爬取,会设置登录验证机制,新浪微博就是其中之一。本篇将详细介绍一个解决“需要登录才能抓取的新浪微博爬虫例子”,帮助你理解和构建类似的爬虫程序。 首先,我们需要...
一个模拟浏览器的新浪微博客户端,采用python实现,现在可以上传图片,希望对那些想做脚本自动发微博的朋友有所帮助。
新浪微博开放平台接入是开发者能够利用新浪的社交网络资源,通过API接口与微博进行交互,实现个性化应用或服务的重要途径。这个过程涉及到的主要知识点包括API接口、OAuth授权、JavaScript编程以及应用的本地测试和...