首页 新闻 会员 周边 捐助

爬虫登录网站

0
悬赏园豆:10 [已解决问题] 解决于 2020-08-02 10:13

最近也想自己做个登录网站签到的爬虫,遇到了登录的问题。这里想请求大佬指教一下,我使用的是 HtmlUnit,前端代码没有 form 标签,主要通过 JS 向后台服务器发送 AJAX 请求,HtmlUnit中已加载 JS 和 CSS,网站登录没有任何形式的验证码,通过 HtmlUnit给 input 输入账号和密码后,已确认点击了 button 按钮,但登录失败。希望希望有经验路过的大佬能指点一下。添麻烦了。
如果其他类库能更好的解决问题,使用其他类库也行。

《超人·迪迦》的主页 《超人·迪迦》 | 初学一级 | 园豆:193
提问于:2020-08-01 14:35
< >
分享
最佳答案
1

只是一个ajax请求且没有验证,不需要任何第三方类库。

很简单,抓一下,直接完全拷贝bytes,然后用tcp写进去,几行代码搞定。

收获园豆:10
花飘水流兮 | 专家六级 |园豆:13617 | 2020-08-01 14:45

您好,萌新不是很懂,希望您能说详细清晰一些,抓一下,指的是抓包吗?tcp指的是那个tcp协议吗?麻烦您了。

《超人·迪迦》 | 园豆:193 (初学一级) | 2020-08-01 14:49

@《超人·迪迦》:

大致流程

eg.

POST https://mcs.snssdk.com/v1/list HTTP/1.1
Host: mcs.snssdk.com
Connection: keep-alive
Content-Length: 1138
Origin: https://www.ixigua.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
Content-Type: application/json; charset=UTF-8
Accept: */*
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: cors
Referer: https://www.ixigua.com/
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7

[{"events":[{"event":"user_fps_block","params":"{\"webid\":\"6797750422339192332\",\"page_type\":\"homepage\",\"url_path\":\"/\",\"max_fps\":62,\"block_times\":0,\"event_index\":1596122363603}","local_time_ms":1596267829010,"is_bav":0}],"user":{"user_unique_id":"6797750422339192332","user_type":12,"user_id":"58760536527","user_is_auth":true,"user_is_login":true,"web_id":"6797750422339192332","ssid":"75c7fa88-0a7a-46de-8670-a0e7da1eb441"},"header":{"app_id":1768,"os_name":"windows","os_version":"10","device_model":"","ab_sdk_version":"1500833,1850681,1692156,1794779","language":"en-US","platform":"web","sdk_version":"4.1.15","timezone":8,"tz_offset":-28800,"resolution":"1536x864","browser":"Chrome","browser_version":"78.0.3904.108","referrer":"https://www.ixigua.com/","referrer_host":"www.ixigua.com","width":1536,"height":864,"screen_width":1536,"screen_height":864,"custom":"{\"user_agent\":\"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36\",\"build_version\":\"2.1.9-6\",\"pc_real_user\":\"1\",\"first_install_time\":1582724624,\"register_time\":1491041222}"}}]

 

fiddler.raw : ctrl+c

由于是text,保存到文件,设读取到变量httpMsg;

code:

tcpWriter.Writer(Utf8.GetBytesFrom(httpMsg));

var response = tcpReader.ReadAll();

 

使用tcp是为了完整复制,所谓旁路破解。

花飘水流兮 | 园豆:13617 (专家六级) | 2020-08-01 15:50

@花飘水流兮: 看了大佬的回答,有请求的报文和一段JS的代码,但并不懂这里面的思路。深知自己刚接触爬虫,连皮毛都不懂,要好好大补爬虫思路以及各相关项目的技术储备。大佬有相关的学习资源推荐吗?尽快结贴,打扰了。

《超人·迪迦》 | 园豆:193 (初学一级) | 2020-08-01 20:14

@《超人·迪迦》: 初级程序员教程(中级程序员教程)->每一章 对应买一本书(主要XX教程写得太带过);

基础原理要学,写代码事半功倍,面对问题更容易处理(而不会那么容易懵逼,毫无方向)。

《深入理解计算机原理》也是本不错的书。

这些都是我读书的时候看过的,其次是动手去理解。

例如时钟的理解、倍频理解...

http只是个简单的通讯(但服务端和客户端相关的约定[并不是强制约束]却非常繁杂,比如光是一个cookie都很多页,细节都是用到哪看到哪),你如果仅仅从通讯看就很简单。

花飘水流兮 | 园豆:13617 (专家六级) | 2020-08-01 22:14
其他回答(1)
0
import hashlib
import requests

url = 'https://hacpai.com/login'
name = '用户名'
password = '密码'
m = hashlib.md5()
m.update(password.encode('utf8'))
md5_password = m.hexdigest()
data = {"nameOrEmail":name,"userPassword":md5_password,"captcha":""}
res = requests.post(url,data=data)
print(res.text)

#去学习一下,前端和后端先把
小小咸鱼YwY | 园豆:3312 (老鸟四级) | 2020-08-01 15:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册