公司内部有个 https 的网站,我想用 Python 去拿它的内容,可是提示我 403......

2018-04-05 22:51:54 +08:00
 yazoox
<html><head> <title>403 Forbidden</title> </head><body>

Forbidden

You don't have permission to access / on this server.

</body></html>

1.我直接用浏览器是可以正常打开浏览的(只要连接到公司内部的网络,就可以打开,不需要登录域帐号)

2.然后我用 Postman 去 GET https://server_address 也能够成功 (我没有设置任何 header,只是填写了 server 地址,然后“发送”)

3.接着,在 postman 里面,能够拿到发送的信息,然后,postman 有个功能,可以直接转换成代码。里面有个是 python 的,我就转换了。

4.把转换后的代码,放到我的 python 脚本里面

结果就是上面的这个 403 提示了。 这个是咋回事儿呢? 难道我需要提供 username/password ?可是我浏览这个网站时,没有这些啊?

5.postman 还可以转换成 curl 的命令行( cur -X GET ......),我试了一下,居然也可以成功拿回 html 的完整内容。就是在 python 中不行。

谢谢!

6005 次点击
所在节点    Python
14 条回复
hotsun168
2018-04-05 22:57:57 +08:00
有没有可能是 useragent 识别。
owlsec
2018-04-05 23:25:51 +08:00
贴代码吧。。。
eluotao
2018-04-05 23:49:35 +08:00
postman 可以,那就是你代码问题了
Molita
2018-04-06 01:47:02 +08:00
agent 头 识别 把比如 requests 这类的 ban 了?
heyf
2018-04-06 03:12:12 +08:00
@hotsun168 应该是,豆瓣的 api 也是得加 useragent
zhchyu999
2018-04-06 05:46:54 +08:00
抓包看结果
shootsoft
2018-04-06 06:11:33 +08:00
内网有的会看 cookie,建议问问 IT
eastrd
2018-04-06 06:21:51 +08:00
建议你直接用 Selenium 模块来模拟浏览器访问网页,这样就不需要手动模拟各种 request headers 了。先从 chrome webdriver 开始,最后 phantomjs
yazoox
2018-04-06 06:30:18 +08:00
@zhchyu999 兄弟
你说的抓包是说用什么 fiddle,鲨鱼 shark 这类工具么?不会……
hotsun168
2018-04-06 08:31:00 +08:00
@yazoox 我很早之前有用过一个叫 smartsniff 的工具,抓包的,分别正常浏览器打开网页,和用你的代码打开网页,对比抓到的包内容的区别。
ZoomQuiet
2018-04-06 08:48:56 +08:00
是也乎 ╮(╯▽╰)╭

能用 cURL ?
那就用 py 调 cURL 通过 pipe 获得数据啊啊啊啊啊啊啊啊…

python 是胶水…不是白胶的~
mianju
2018-04-06 10:04:25 +08:00
ciensoledad
2018-04-06 12:20:47 +08:00
之前遇到过类似的 分析之后用了 requests_ntml 解决了登陆问题
mingyun
2018-04-06 23:27:16 +08:00
@mianju 这个需要翻墙?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/444563

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX