我正试图通过请求库的一些网络抓取工作,并且我偶然发现了加密的POST数据。我想要做的是以编程方式找到一种方法来检索POST变量的键名,以便我可以发送我自己的未过滤值。有没有办法做到这一点,有人可以向我解释或指出我正确的方向吗?
import requests
s = requests.Session('http://thiswebsite.com/login', auth=('username','password'))
# Find some way to determine what k is for POST variables in k,v
params = {
'INeedThis' : 'So I can pass this',
'AndAlsoThis' : 'So I can pass this too',
'AndSoOn' : 'etc'
}
x = post('http://thiswebsite.com/anotherpage', params)
print x.status_code
答案 0 :(得分:0)
如果您需要按POST
发送数据的名称,则必须先GET
此页面,然后在{{}找到所有<input>
,<button>
,<text>
{1}}
例如 - facebook.com上的登录页面
<form>
结果:
import requests
from bs4 import BeautifulSoup
r = requests.get('http://www.facebook.com/')
soup = BeautifulSoup(r.content, 'lxml')
for x in soup.find_all('form'):
for i in x.find_all(['input', 'button', 'text']):
print(i.name, i.get('name'))
print('---')
如您所见,input lsd
input email
input pass
input None
input persistent
input default_persistent
input timezone
input lgndim
input lgnrnd
input lgnjs
input ab_test_data
input locale
input next
---
input lsd
input firstname
input lastname
input reg_email__
input reg_email_confirmation__
input reg_passwd__
input sex
input sex
button websubmit
input referrer
input asked_to_login
input terms
input ab_test_data
input contactpoint_label
input locale
input reg_instance
input captcha_persist_data
input captcha_session
input extra_challenge_params
input recaptcha_type
input captcha_response
button None
---
有很多input
,所以有时最好手动使用browser
并查看从浏览器发送到服务器的“名称”:)