Dar*_*ber 5 python paypal python-requests
我想在成功登录贝宝后打印仪表板 html 源代码,这是我的完整代码
import requests
import lxml.html
# Get Auth & Login URL
get_login = requests.get('https://paypal.com/cgi-bin/webscr?cmd=_login-run')
get_login_response = get_login.text.encode('utf-8') #printing html source
get_login_html = lxml.html.fromstring(get_login_response) #printing <Element html at 0x7f19cb242ec0>
auth = get_login_html.xpath("//input[@name='auth']/@value") #printing [<InputElement 7fb0971e9f18 name='auth' type='hidden'>]
login_url = get_login_html.xpath("//form[@name='login_form']/@action")
# Post Login
payload = {
'login_cmd':'',
'login_params':'',
'login_email':'websec@spam4.me',
'login_password':'jancok666',
'auth':auth[0],
'submit.x':'Log In',
'form_charset':'UTF-8',
'browser_name':'Firefox',
'browser_version':'18',
'browser_version_full':'18.0'
}
post_login = requests.post(login_url[0], data=payload)
post_login_response = post_login.text.encode('utf-8')
print post_login_response
Run Code Online (Sandbox Code Playgroud)
但我得到的是像这样的验证码挑战的 html 源代码
......... <h1 class="headerText">Security Challenge</h1><p>Type the characters you see in the image for security purposes.</p>
Run Code Online (Sandbox Code Playgroud)

那么如何在成功登录后打印仪表板 html 源代码?我的代码有什么问题?非常感谢:D
小智 2
您需要使用代理,以便请求不会来自同一个 IP 地址以避免 reCAPTCHA
import requests
import lxml.html
# Get Auth & Login URL
get_login = requests.get('https://paypal.com/cgi-bin/webscr?cmd=_login-run')
get_login_response = get_login.text.encode('utf-8') #printing html source
get_login_html = lxml.html.fromstring(get_login_response) #printing <Element html at 0x7f19cb242ec0>
auth = get_login_html.xpath("//input[@name='auth']/@value") #printing [<InputElement 7fb0971e9f18 name='auth' type='hidden'>]
login_url = get_login_html.xpath("//form[@name='login_form']/@action")
# Post Login
payload = {
'login_cmd':'',
'login_params':'',
'login_email':'websec@spam4.me',
'login_password':'jancok666',
'auth':auth[0],
'submit.x':'Log In',
'form_charset':'UTF-8',
'browser_name':'Firefox',
'browser_version':'18',
'browser_version_full':'18.0'
}
#proxy
proxy = {
'https': '1.2.3.4:1234',
'http': '1.2.3.4:1234'
}
post_login = requests.post(login_url[0], data=payload, proxies=proxy)
post_login_response = post_login.text.encode('utf-8')
print post_login_response
Run Code Online (Sandbox Code Playgroud)
像这样,您不应该再次获得验证码......:)